使用JSTL forEach循环的varStatus作为ID


104

我想使用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" >

9
这是该类的javadoc:download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core / ...看看它提供了哪些getter方法。是的,其中有一个getIndex():)
BalusC

Answers:


259

由set设置的变量varStatusLoopTagStatus对象,而不是int。用:

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

澄清:

  • ${theCount.index} 开始于 0除非您已设置begin属性否则
  • ${theCount.count} 开始于 1

21
${theCount.count} 总是从1 ${theCount.index}开始。从您设置begin属性的位置开始。例如<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
vegemite4me,2013年

8

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

JSTL c:forEach varStatus属性

属性获取器说明

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

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

  • count getCount()当前一轮迭代的基于一的计数

  • first isFirst()标志,指示当前回合是否是迭代的第一遍
  • last isLast()标志,指示当前回合是否是迭代中的最后一次传递

  • begin getBegin()begin属性的值

  • end getEnd()end属性的值

  • step getStep()step属性的值


4

你可以试试看 类似结果

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

1

它确实帮助我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,直到我修复它为止。
Dan在火光旁摆弄2014年

这提供了与3年前(使用varStatus.count)已经提供的完全相同的答案,只是可读性差得多。为什么要烦恼阅读别人的答案?;)
rustyx
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.