【问题标题】:JSTL foreach for list in listJSTL foreach 列表中的列表
【发布时间】:2015-01-30 15:53:09
【问题描述】:

我有一个控制器,它返回由实体列表和一个 Long 值组成的 Set。

    List<EventDto> events = eventService.getAllEventsPaging(page, size);
    Long dataBaseCount = eventRepository.count();
    Set<Object> pagingSet = new HashSet<Object>();
    model.addAttribute("events", pagingSet);
    return "events";

如何在 jsp 上从 EventDto 访问字段。我试过了:

<c:forEach var="pagingSet.events" items="${pagingSet.events}">
  <tr>
    <td><c:out value="${pagingSet.events.name}">
        </c:out></td>
  </tr>
</c:forEach>

但是没用

【问题讨论】:

  • 您是否尝试将var="pagingSet.events" 替换为var="event",然后调用它${event.name}
  • 为什么要将pagingSets作为events添加到模型中?
  • 您在活动中有参赛作品吗?
  • @lifus 是的,我试过了。它不起作用
  • @BohdanMyslyvchuk 那么好吧。 pagingSet 似乎是空的,而您打算改为写 model.addAttribute("events", events);

标签: java foreach jstl


【解决方案1】:

在 JSTL 的 forEach loop 中,var 用作对 items 中项目列表中每个元素的引用。这两个值应该不同。本质上就像用Java写for (Object event : pagingSet.events)(代码不会编译,只是伪代码)。

把你的代码改成这样就可以了:

<c:forEach var="event" items="${pagingSet.events}">
  <tr>
    <td><c:out value="${event.name}">
        </c:out></td>
  </tr>
</c:forEach>

【讨论】: