我几乎到处搜索这个逻辑,但我确信我没有做得很好,因此这个问题。
我有一个Arraylist,它需要迭代并以下列格式显示
User1 User2 User3
User4 User5 User6
User7 User8 User9
我能够使用普通的JSP scriptlet但不使用JSTL。我尝试过使用JSTL,但它从列表中跳过了一些条目。这是我的代码
<tr>
<c:forEach var="party" items="${partiesList}">
<c:set var="ctr" value="${ctr+1}" scope="page"/>
<c:choose>
<c:when test="${ctr le 3}">
<td>
<figure>
<img src="images/${party.avatarUrl}" onclick="showHide('','${party.screenName}')" class="avaimg" alt="${party.screenName}">
<figcaption><spring:message code="user.${party.screenName}" text="${party.screenName}"/></figcaption>
</figure>
</td>
</c:when>
<c:otherwise>
</tr>
<c:set var="ctr" value="0" scope="page"/>
</c:otherwise>
</c:choose>
</c:forEach>
任何帮助将不胜感激。
提前致谢
答案 0 :(得分:0)
您可以使用varStatus
属性和模运算符(%
)来完成此操作。
<table>
<c:forEach var="party" items="${partiesList}" varStatus="status">
<c:if test="${status.index % 3 == 0}"><tr></c:if>
<td>${status.index}</td>
<c:if test="${status.index % 3 == 2}"></tr></c:if>
</c:forEach>
</table>
varStatus
将返回LoopTagStatus
个对象,其中index
为
迭代当前轮次的索引。如果正在对基础数组(java.lang.Collection或其他类型)的子集执行迭代,则返回的索引相对于基础集合是绝对的。指数从0开始。
您可以使用modulo运算符检查是否需要启动或关闭新行。
另一种方法是循环遍历列表,将其作为无编号列表输出,并使用CSS按照您希望的方式设置样式。这就是我如何解决它。 CSS的外观示例:
ul.my-class { overflow: hidden; width: 600px; }
ul.my-class li { float: left; width: 200px; }