我的 JSP 中有一个模型属性(这是一个包含名称的列表)。例如我的列表
现在我可以使用 forEach 轻松地遍历 JSP 中的列表
<c:forEach items="${myList}" var = "singleItem" varStatus="status">
${singleItem.name}
</c:forEach>
这很好用。 现在我的要求是我有一个需要显示的结构:
<div id="top"></div>
<p>name1</p>
<p>name2</p>
<div id="bottom"></div>
<div id="top"></div>
<p>name3</p>
<p>name4</p>
<div id="bottom"></div>
<div id="top"></div>
<p>name5</p>
<p>name6</p>
<div id="bottom"></div>
此处 name1、name2 等在 myList
中。那么我该如何运行 forEach 循环才能实现上面显示的输出。
我卡住了。请帮我。 :(
最佳答案
虽然我个人赞成的 Sotirios 答案以及 skaffman 最初提出的答案是解决初始问题的真正聪明的解决方法,但它可能会导致 NPE 或需要事先进行一些检查。
我肯定会采用替代方法或“直接”方式,在必要时应插入所有“额外”标记(在您的情况下为 <div>
标记),例如:
<c:set var="length" value="${fn:length(myList)}"/>
<c:forEach items="${myList}" var = "singleItem" varStatus="status">
<c:if test="${status.index % 2 == 0}">
<div class="top"></div>
</c:if>
<p>${singleItem.name}</p>
<c:if test="${(status.index % 2 == 1) or (status.index + 1 == length)}">
<div class="bottom"></div>
</c:if>
</c:forEach>
另请注意,您应该替换您的 <div>
的 ID用于样式类以防止 JSP 中出现重复的 ID。
关于java - 如何循环使用JSTL forEach实现自定义结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15731211/