我有一个 servlet,其中在 session 范围内存储了一个数组,如下所示,
session.setAttribute("pageNames",pageNames);
现在,该 servlet 将控制权转移到 JSP 页面,该页面在加载时调用函数“getPage()”,如下所示,
<body id="qwer" onload="getPage('<%=(String[])session.getAttribute("pageNames")%>'>
“getPage()”的 JavaScript 代码如下,
function getPage(pageNamesArray)
{
var ele = document.getElementById('app');
for(var i=0;i<10;i++)
{
var imageLabel = document.createElement("label");
imageLabel.innerHTML = pageNamesArray[i];
ele.appendChild(imageLabel);
}
}
我预计我会从存储在 session 中的“pageNames”数组中获取前 10 个值的名称,但我得到了以下输出,
[Ljava.lang.String;@17a8undefineundefineundefined
我在 servlet 中测试了代码,发现数组“pageNames”填充了超过 40 个值。
任何人都可以建议我如何从内部打印数组 pageNames 的值 JSP页面? 提前致谢。
最佳答案
您的方法是正确的,但这不是打印数组元素的方式。您必须循环遍历数组并输出组件。
为了保持干净,您可以创建另一个 JavaScript 函数,例如:
function getPageNames() {
var pageNamesArray = [
<c:forEach var="p" items="${sessionScope.pageNames}" varStatus="status">
${status.first ? '' : ','} "${p}"
</c:forEach>
];
return pageNamesArray;
}
然后有:
<body id="qwer" onload="getPage(getPageNames())">
我上面所做的是创建一个包含页面名称的 Javascript 数组,输出如下:
function getPageNames() {
var pageNamesArray = [
"page1"
,"page2"
,"etc"
];
return pageNamesArray;
}
关于java - 如何从 JavaScript 中访问存储在 session 中的数组变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121294/