JSTL打印arrayList元素

时间:2008-12-20 16:15:26

标签: java jsp jstl

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

                                    

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

2 个答案:

答案 0 :(得分:3)

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

forEach可以迭代:

  • 一系列原生或Object类型(注意:,这包括因类型擦除而包含的任何通用数组);
  • Collection或任何子类;
  • 任何Iterator;
  • Enumeration;
  • 任何实施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}或其他任何内容。

答案 1 :(得分: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>