0

我有一个 JSP 页面,它接收一个事件对象的 ArrayList,每个事件对象都包含一个日期的 ArrayList。我正在使用以下内容遍历事件对象:

如何遍历每个事件对象的 dateTimes ArrayList 并打印出每个事件的日期/时间?

4

2 回答 2

3

如果我理解你的问题,你基本上有一个 ArrayList 的 ArrayList。JSTL 对什么是有效的“项目”“集合”有一些相当奇怪的规则。JSTL 1.2 规范没有充分回答这个问题,所以我查看了源代码。

forEach 可以迭代:

  • 本机或对象类型的数组(注意:由于类型擦除,这包括任何通用数组);
  • 集合或任何子类;
  • 任何迭代器
  • 枚举;_
  • 任何实现Map的东西;或者
  • 逗号分隔值作为String。这是已弃用的行为。

注意事项:在这种情况下使用迭代器和枚举可能会出现问题,因为这样做会修改它们的状态并且无法重置它们(通过 JSTL)。

无论如何,代码很简单:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<c:forEach var="event" items="${events}">
  <c:forEach var="date" items="${event}">
    <fmt:formatDate value="${date}" type="both"
      timeStyle="long" dateStyle="long" />
  </c:forEach>
</c:forEach>

假设事件对象只是日期的集合。如果该集合是一个属性,那么只需替换${event}${event.dates}或其他。

于 2008-12-20T16:30:19.557 回答
2
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
 <c:forEach items="${events}" var="event">
     <c:forEach items="${event.dates}" var="date">
          <fmt:formatDate value="${date}" type="both"
          timeStyle="long" dateStyle="long" />
      </c:forEach>
 </c:forEach>
于 2008-12-20T16:31:07.403 回答