Я хочу использовать счетчик из цикла 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" >
Ответ 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}