使用JSTL forEach循环的varStatus作为ID

时间:2011-07-06 17:48:40

标签: java jsp jstl el

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

4 个答案:

答案 0 :(得分:250)

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

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

澄清:

  • ${theCount.index}0开始计算,除非您设置了begin属性
  • ${theCount.count}1
  • 开始计算

答案 1 :(得分:5)

你会使用以下任何一种:

JSTL c:forEach varStatus properties

属性获取者描述

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

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

  • count getCount()当前迭代循环的从1开始的计数

  • 首先是isFirst()标志,表示当前轮次 是第一次通过迭代
  • last isLast()标志,指示当前回合是否是迭代的最后一次传递

  • begin getBegin()begin属性的值

  • end getEnd()结束属性的值

  • step getStep()步骤属性的值

答案 2 :(得分:3)

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

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

答案 3 :(得分: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}