使用JSTL的forEach
标签,是否可以逆序迭代?
最佳答案
当您使用 forEach
时要创建一个整数循环,您可以前进或后退,但这需要一些工作。事实证明你不能这样做,例如:
<c:forEach var="i" begin="10" end="0" step="-1">
....
</c:forEach>
因为规范要求步骤是肯定的。但是您总是可以按正序循环,然后使用 <c:var
将递增数转换为递减数:
<c:forEach var="i" begin="0" end="10" step="1">
<c:var var="decr" value="${10-i}"/>
....
</c:forEach>
但是,当您执行 forEach
在任何类型的集合中,我不知道有任何方法可以让对象以相反的顺序排列。至少,首先将元素排序为相反的顺序,然后然后使用forEach
.
我已成功导航到 forEach
通过在 JSP 中执行以下操作以所需的顺序循环:
<%
List list = (List)session.getAttribute("list");
Comparator comp = ....
Collections.sort(list, comp);
%>
<c:forEach var="bean" items="<%=list%>">
...
</c:forEach>
使用合适的比较器,您可以按任何所需的顺序遍历项目。这行得通。但我不知道有一种方法可以说,很简单,以相反的顺序迭代提供的集合。
关于java - JSTL forEach 逆序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/712046/