Я хочу использовать счетчик из цикла 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" >
getIndex()
:)Ответы:
Установленная переменная
varStatus
- этоLoopTagStatus
объект, а не int. Использование:Чтобы уточнить:
${theCount.index}
начинает отсчет,0
если вы не установилиbegin
атрибут${theCount.count}
начинает считать в1
источник
${theCount.count}
всегда начинается с 1.${theCount.index}
начинается с того, что вы установили дляbegin
атрибута. eg<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
вы бы использовали любой из них:
JSTL c: для каждого свойства varStatus
Описание получения свойства
current getCurrent () Элемент (из коллекции) для текущего раунда итерации.
index getIndex () Отсчитываемый от нуля индекс для текущего раунда итерации.
count getCount () Отсчет от единицы для текущего раунда итерации
last isLast () Флаг, указывающий, является ли текущий раунд последним проходом через итерацию
begin getBegin () Значение атрибута begin
end getEnd () Значение атрибута end
step getStep () Значение атрибута step
источник
Вы можете попробовать это. аналогичный результат
источник
Это действительно помогло мне динамически генерировать идентификаторы
showDetailItem
для приведенного ниже кода.если вы выполните эту строку,
<af:outputText value="#{ttfVs}"/>
напечатайте следующее:источник
varStatus.count
), только гораздо менее читаемый. Зачем читать ответы других людей? ;)