Когда вы используете 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>
С помощью подходящего компаратора вы можете перебирать элементы в любом желаемом порядке. Это работает. Но я не знаю, как сказать, очень просто, выполнить итерацию в обратном порядке предоставленной коллекции.