我有一个n个元素的列表,我想在一组3中输出。集合的大小可能会有很大差异,但输出必须分组为3。
<ul>
<li>
<div>element 1</div>
<div>element 2</div>
<div>element 3</div>
</li>
<li>
<div>element 4</div>
<div>element 5</div>
<div>element 6</div>
</li>
<li>
<div>element 7</div>
<div>element 8</div>
</li>
</ul>
我想使用forEach和if语句,但我无法正确生成输出。有什么建议吗?
答案 0 :(得分:2)
我不确定语法,但这应该有帮助,使用“varStatus”的“count”属性来知道你在哪个元素编号...
编辑:显然“.count”不是零索引,所以正确的代码是:
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<c:set var="myListSize" value="${fn:length(myList)}"/>
<c:forEach var="element" items="${myList}" varStatus="stat">
<c:choose>
<c:when test="${ stat.count == 1 }">
<ul>
<li>
<div>${element}</div>
</c:when>
<c:when test="${ stat.count == myListSize }">
<div>${element}</div>
</li>
</ul>
</c:when>
<c:when test="${stat.count % 3 == 0 && stat.count < myListSize }">
<div>${element}</div>
</li>
<br/>
<li>
</c:when>
<c:otherwise>
<div>${element}</div>
</c:otherwise>
</c:choose>
</c:forEach>
它仍然可以改进,但现在它可以工作。
答案 1 :(得分:0)
这可能不是最佳的,但是如何在Java scriptlet中进行一次传递,创建3s组,将它们添加到bean中,然后迭代那些具有2个嵌套foreach循环的那些。