【问题标题】:Print an array forwarded from a servlet to a JSP打印从 servlet 转发到 JSP 的数组
【发布时间】:2012-04-23 11:38:55
【问题描述】:

我已将数组 userName[][] 从 servlet 转发到 JSP。我可以访问像${userName[2][3]} 这样的数组元素,但我不能使用变量遍历数组。例如${userName[i][j]}${userName[<%=i>][<%=j>]} 不工作。

另外,我应该将我的索引变量声明为 var(JS),因为我的代码也使用 JS 从数组中绘制图形,还是需要使用 JSTL?我是 JSP 的新手

【问题讨论】:

    标签: arrays jsp servlets printing jstl


    【解决方案1】:

    这是您在 JSTL 中遍历数组的方法(请注意,我将您的 userName 变量复数,因为它是一个数组):

    <c:forEach var="userName" items="userNames">
        // do something with the userName
    </c:forEach>
    

    由于你的数组是一个数组数组,你可以嵌套两次迭代:

    <c:forEach var="innerArray" items="userNames">
        <c:forEach var="element" items="innerArray">
             // do something with the element
        </c:forEach>
    </c:forEach>
    

    请注意,JavaScript 在客户端执行,而 JSP 在服务器端执行。当 JS 代码执行时,它无权访问您的服务器端 Java 数组。如果您需要在客户端访问 Java 数组的内容,您应该使用 JSON 对其进行序列化,并在 JavaScript 中解析生成的 JSON 字符串。

    【讨论】:

    • 谢谢 Nizet,但我想使用索引表示法,这样我就可以访问数组的任何部分,而不是按顺序一个一个地遍历它们。有人可以帮我吗?
    • &lt;c:set var="i" value="5"/&gt;&lt;c:set var="j" value="7"/&gt;${userName[i][j]} 应该按预期工作。
    • 感谢您的快速回复。还有一件事,我们不应该把它写成 ${userName[${i}][${j}]} 吗?
    • 没有。一旦介于${} 之间,就定义了一个EL 表达式,这样的EL 表达式可以使用多个属性。
    • 谢谢,解决了。同样的方法也适用于列表吗?
    猜你喜欢
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    相关资源
    最近更新 更多