У меня есть это требование для одновременного повторения 3 списков в jstl. для итерации по одному списку мы используем
<c:forEach var = "mfgn" items = "${requestScope.mfgNumber}" varStatus = "status">
do something;
</c:forEach>
Мне нужно сделать что-то вроде
<c:forEach var = "mfgn" var = "issue" items = "${requestScope.mfgNumber}" items = "${requestScope.something" varStatus = "status">
mfgNumber;
</c:forEach>
возможно ли это или есть другой способ перебирать несколько списков одновременно.
Ответ 1 · рейтинг 8 · BalusC
Если они имеют одинаковый размер, то есть два варианта, если предположить, что это List<Integer> и List<String>:
Объедините их в один список с сущностями, которые, в свою очередь, представляют элементы друг друга в одном классе, например List<ManfacturerIssue>, где ManfacturerIssue - это класс javabean, который содержит свойства Integer number и String issue. Таким образом, вы можете сделать:
<c:forEach items="${mfgIssues}" var="mfgIssue">
${mfgIssue.number}, ${mfgIssue.issue}
</c:forEach>
Вместо этого выполняйте итерацию по индексу, однако это уродливо и неприемлемо, поскольку (заполните):
<c:forEach begin="0" end="${fn:length(mfgNumbers) - 1}" varStatus="loop">
${mfgNumbers[loop.index]}, ${issues[loop.index]}
</c:forEach>