Использовать JSTL forEach loop varStatus как идентификатор

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

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

производит

<div id="[email protected]" >

Ответ 1

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

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

Чтобы уточнить:

  • ${theCount.index} начинает считать с 0 если вы не установили атрибут begin
  • ${theCount.count} начинает считать с 1

Ответ 2

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

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

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

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

Ответ 4

Это действительно помогло мне динамически генерировать идентификаторы 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}