Используйте varStatus цикла JSTL forEach в качестве идентификатора - PullRequest
98 голосов
/ 06 июля 2011

Я хочу использовать счетчик из цикла JSTL forEach, но мой код не работает.

<c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
    <div id="divIDNo${theCount}">
    </div>
</c:forEach>

производит

<div id="divIDNojavax.servlet.jsp.jstl.core.LoopTagSupport$1Status@5570e2" >

Ответы [ 4 ]

251 голосов
/ 06 июля 2011

Переменная, установленная varStatus, является объектом LoopTagStatus, а не int. Использование:

<div id="divIDNo${theCount.index}">

Для уточнения:

  • ${theCount.index} начинает отсчет с 0, если вы не установили атрибут begin
  • ${theCount.count} начинает отсчет с 1
5 голосов
/ 06 апреля 2016

вы бы использовали любой из них:

JSTL c: свойства forEach varStatus

Описание свойства Getter

  • current getCurrent ()(из коллекции) для текущего раунда итерации.

  • index getIndex () Начинающийся с нуля индекс для текущего раунда итерации.

  • count getCount () Счет на единицу для текущего раунда итерации

  • first isFirst () Флаг, указывающий, является ли текущий раунд первым проходом через итерацию
  • last isLast () Флаг, указывающий, является ли текущий раунд последним проходом через итерацию

  • begin getBegin () Значение атрибута begin

  • end getEnd () Значение атрибута end

  • step getStep () Значение атрибута step

3 голосов
/ 09 июля 2011

Вы можете попробовать это.аналогичный результат

 <c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
    <div id="divIDNo${theCount.count}"></div>
 </c:forEach>
1 голос
/ 16 июля 2014

Это действительно помогло мне динамически генерировать идентификаторы showDetailItem для приведенного ниже кода.

<af:forEach id="fe1" items="#{viewScope.bean.tranTypeList}" var="ttf" varStatus="ttfVs" > 
<af:showDetailItem  id ="divIDNo${ttfVs.count}" text="#{ttf.trandef}"......>

если вы выполните эту строку, <af:outputText value="#{ttfVs}"/> напечатает следующее:

{index = 3, count = 4, last = false, first = false, end = 8, step = 1, begin = 0}

...