我想使用 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。利用:
<div id="divIDNo${theCount.index}">
澄清:
${theCount.index} 从 0 开始计数,除非您设置了 begin 属性
${theCount.count} 从 1 开始计数
您可以使用以下任何一种:
JSTL c:forEach varStatus 属性
属性获取器说明
current getCurrent() 当前轮次迭代的项目(来自集合)。
index getIndex() 当前轮次迭代的从零开始的索引。
count getCount() 本轮迭代的从一开始的计数
first isFirst() 指示当前轮次是否是第一次通过迭代的标志
last isLast() 指示当前轮次是否是最后一次通过迭代的标志
begin getBegin() begin 属性的值
end getEnd() end 属性的值
step getStep() step 属性的值
你可以试试这个。类似的结果
<c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
<div id="divIDNo${theCount.count}"></div>
</c:forEach>
它确实帮助我为以下代码动态生成 showDetailItem
的 id。
<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}
varStatus.count
),只是可读性要低得多。为什么要阅读其他人的答案? ;)
${theCount.count}
总是 从 1 开始。${theCount.index}
从您将begin
属性设置为的任何值开始。例如<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">