Возможно ли повторять итерацию двух элементов одновременно с помощью foreach в jstl?
У меня есть два элемента из моей модели, и я хочу их повторить с помощью jstl foreach. как я могу достичь этого, используя правильный синтаксис?
Ответы
Ответ 1
Вы можете вызвать varStatus.index
, чтобы получить индекс текущего раунда итерации, а затем использовать его для поиска второго списка.
Например, если у вас есть два списка people.firstnames
и people.lastnames
, вы можете сделать:
<c:forEach var="p" items="${people.firstnames}" varStatus="status">
<tr>
<td>${p}</td>
<td>${people.lastnames[status.index]}</td>
</tr>
</c:forEach>
Ответ 2
Я предполагаю, что у вас есть коллекции, которые вы хотите перебирать за один раз. Добавьте геттер, который объединит эти две коллекции и будет использовать его для итерации. Например
private Collection<String> first;
private Collection<String> second;
public Collection<String> getBoth()
{
List<String> result = new ArrayList<String>();
result.addAll(first);
result.addAll(second);
return result;
}
Итерация в JSTL:
<c:forEach var="p" items="${people.both}">
<tr>
<td>${p}</td>
</tr>
</c:forEach>