Lit*_*ski 2 html java foreach for-loop jstl
我的JSP中有一个模型属性(包含名称的List).例如myList
现在,我可以使用forEach轻松遍历JSP中的列表,例如
<c:forEach items="${myList}" var = "singleItem" varStatus="status">
${singleItem.name}
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
这很好用.现在我的要求是我有一个我需要展示的结构:
<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>
Run Code Online (Sandbox Code Playgroud)
这里名称1,名称2等在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>
Run Code Online (Sandbox Code Playgroud)
另请注意,您应该使用<div>for for style的id替换JSP中的重复ID.