java - 如何从 JavaScript 中访问存储在 session 中的数组变量?

标签 java javascript jsp jakarta-ee servlets

我有一个 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;
}

我正在使用JSTL为此,但您也可以使用 scriptlet 。这个想法是循环遍历数组。

关于java - 如何从 JavaScript 中访问存储在 session 中的数组变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21121294/

相关文章:

java - UDP 数据报套接字 + java 中的校验和

java - Android Studio Libgdx 游戏横向转纵向

javascript - 为什么重命名 HTML 元素会删除其事件?

javascript - 返回数组中最大值的索引

javascript - 为动态加载的 HTML 内容触发 Bootstrap JS 行为

java - 如何在java中使用AWS Textract检索pdf中存在的表

java - jnetpcap保存rtp负载: both channels

java - 向所有在线用户广播弹出消息 Java,Jsp

javascript - 在 Firefox 中,insertRow() 在 javascript 中不起作用

java - 关于 request.getParameter 和 JSTL