【问题标题】:jstl foreach won't iterate a listjstl foreach 不会迭代列表
【发布时间】:2014-06-20 04:56:12
【问题描述】:

我想迭代一个通过request 范围传递给我的jsp 的列表。

这是我试过的代码:

<c:forEach items="${param.evaluateurs}" var="evaluateur">
     <c:out value="${evaluateur.lastname}"></c:out> <c:out value="${evaluateur.fistname}"</c:out>
</c:forEach>

但是当我运行 jsp 时,我只看到一个条目,所以我猜它没有迭代列表。

但是当我使用for loop 时它可以工作:

<%
java.util.List<emaeval.statistic.doa.Users> evaluateurs = 
        (java.util.List<emaeval.statistic.doa.Users>) request.getAttribute("evaluateurs");
for(emaeval.statistic.doa.Users evaluateur : evaluateurs) {
 %> 

<%= evaluateur.getFirstname() %> <%= evaluateur.getLastname() %> 

<% } %>

jstl方法有什么问题?

【问题讨论】:

  • 您是在&lt;c:out value="${evaluateur.fistname}" 中缺少&gt; 还是只是复制粘贴错误?
  • 是的,这只是复制过去的错误

标签: jsp jakarta-ee jstl


【解决方案1】:

jstl param 中等同于request.getParameter。由于您必须从 request 访问它,因此您必须像下面那样进行迭代

<c:forEach items="${evaluateurs}" var="evaluateur">
     <c:out value="${evaluateur.lastname}"></c:out> <c:out value="${evaluateur.fistname}"</c:out>
</c:forEach>

【讨论】:

    【解决方案2】:

    您的问题是 evaluateurs 不是作为请求 parameter 发送的,而是请求 attribute 给 JSP。因此,您必须从正确的位置获取它(不是来自参数图)。

    不要使用"${param.evaluateurs}",而是使用"${evaluateurs}"

    【讨论】: