一尘不染

JSTL forEach逆序

jsp

使用JSTL的forEach标签,是否可以以相反的顺序进行迭代?


阅读 503

收藏
2020-06-08

共1个答案

一尘不染

当您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>

使用合适的比较器,您可以按任何所需顺序遍历项目。这可行。但是我不知道有一种方法可以说很简单,以相反的顺序迭代所提供的集合。

2020-06-08