使用 JSTL forEach 循环的 varStatus 作为 ID
Posted
技术标签:
【中文标题】使用 JSTL forEach 循环的 varStatus 作为 ID【英文标题】:Use JSTL forEach loop's varStatus as an ID 【发布时间】:2011-09-29 20:29:32 【问题描述】:我想使用 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" >
【问题讨论】:
这是类的 javadoc:download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/… 看看它提供了哪些 getter 方法。是的,其中有一个getIndex()
:)
【参考方案1】:
varStatus
设置的变量是 LoopTagStatus
对象,而不是 int。使用:
<div id="divIDNo$theCount.index">
澄清一下:
$theCount.index
从 0
开始计数,除非您设置了 begin
属性
$theCount.count
从 1
开始计数
【讨论】:
$theCount.count
always 从 1 开始。$theCount.index
从您设置的 begin
属性开始。例如<c:forEach var="foo" items="$bar" begin="5" varStatus="theCount">
【参考方案2】:
您可以使用以下任何一种:
JSTL c:forEach varStatus 属性
属性获取器说明
current getCurrent() 当前的项目(来自集合) 一轮迭代。
index getIndex() 本轮从零开始的索引 迭代。
count getCount() 本轮迭代的从一开始的计数
first isFirst() 标志是否当前轮 是第一次通过迭代last isLast() 指示当前轮次是否为最后一次迭代的标志
begin getBegin()开始属性的值
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
的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
【讨论】:
@HenryKeiter 这里有一个真正的答案。错误的格式只是隐藏了所有的 html,直到我修复它。 这提供了与 3 年前已经提供的完全相同的答案(使用varStatus.count
),只是可读性要低得多。为什么要阅读其他人的答案? ;)以上是关于使用 JSTL forEach 循环的 varStatus 作为 ID的主要内容,如果未能解决你的问题,请参考以下文章