ChatGPT解决这个技术问题 Extra ChatGPT

使用 JSTL forEach 循环的 varStatus 作为 ID

我想使用 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() :)

A
Andrew Tobilko

varStatus 设置的变量是 LoopTagStatus 对象,而不是 int。利用:

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

澄清:

${theCount.index} 从 0 开始计数,除非您设置了 begin 属性

${theCount.count} 从 1 开始计数


${theCount.count} 总是 从 1 开始。${theCount.index} 从您将 begin 属性设置为的任何值开始。例如<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
d
diego matos - keke

您可以使用以下任何一种:

JSTL c:forEach varStatus 属性

属性获取器说明

current getCurrent() 当前轮次迭代的项目(来自集合)。

index getIndex() 当前轮次迭代的从零开始的索引。

count getCount() 本轮迭代的从一开始的计数

first isFirst() 指示当前轮次是否是第一次通过迭代的标志

last isLast() 指示当前轮次是否是最后一次通过迭代的标志

begin getBegin() begin 属性的值

end getEnd() end 属性的值

step getStep() step 属性的值


S
Sanath

你可以试试这个。类似的结果

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

D
Dan Is Fiddling By Firelight

它确实帮助我为以下代码动态生成 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),只是可读性要低得多。为什么要阅读其他人的答案? ;)