Можно ли выполнить итерацию двух элементов одновременно, используя foreach в JSTL? - PullRequest
14 голосов
/ 10 ноября 2010

У меня есть два элемента из моей модели, и я хочу повторить их одновременно, используя jstl foreachКак я могу добиться этого, используя правильный синтаксис?

Ответы [ 2 ]

28 голосов
/ 10 ноября 2010

Вы можете вызвать 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>
0 голосов
/ 10 ноября 2010

Я предполагаю, что у вас есть коллекции, которые вы хотите повторить за один раз. Добавьте метод получения, который объединит эти две коллекции и используйте его для итерации. Например

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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...