【问题标题】:Struts forEach tag not iterating through ArrayListStruts forEach 标签不遍历 ArrayList
【发布时间】:2009-08-24 09:28:04
【问题描述】:

我有一些代码!代码如下所示:

<c:forEach var="element" items="%{serviceList.getServices()}">
        <p>Hello!</p>
</c:forEach>

“serviceList”是一个bean,上面有一个名为getServices()的方法。 getServices() 返回一个 ArrayList,所以我很自然地假设上面的代码会获取 arraylist,并遍历它,将列表的每个元素放入变量“元素”中。

不是这样!当我查看页面时,Hello被打印一次(getServices()的大小为2,我可以直接在页面上打印出来显示。

标签本身有效:

<c:forEach begin="1" end="10">Hello, World!<br></c:forEach>

打印出您所期望的。所以这一定与我传入的物品有关。有什么帮助吗?

哦,这是使用 JSTL 1.1.2、Struts 2.1.6 和最新版本的 Java。

【问题讨论】:

  • 您正在使用 jstl-core 标签 forEach,它不是 Struts 的一部分。 Struts 标签 提供相同的功能。

标签: java struts foreach iteration


【解决方案1】:

你打错了,你应该像这样使用${variable name}

<c:forEach var="element" items="${serviceList.services}">
  <p>Hello!</p>
</c:forEach>

然后行为就会如你所愿。

【讨论】:

  • EL(从 JSP 2.1 开始)不允许您在实例上调用方法;您只能将自定义函数映射为静态方法。 (虽然 JEE6 等提供了更好的方法支持。)
  • @McDowell - 谢谢,刚刚从问题中复制下来 - 我会编辑和更正它。
【解决方案2】:
${serviceList.services}

您的表达式语言语法不正确。有关更多信息,请参阅JSP 2.1 spec 的 EL 部分。

【讨论】:

    猜你喜欢
    • 2011-09-08
    • 2012-12-10
    • 1970-01-01
    • 2015-11-28
    • 2023-03-17
    • 2014-06-14
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多