用循环递增计数器

这个问题与我以前的问题有关:

Jsp迭代低谷对象列表

我想在我的for循环中插入从0开始的计数器,到目前为止我已经尝试了几种组合:

1。

<c:forEach var="tableEntity" items='${requestScope.tables}'> <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count"> <c:out value="${count}" /> </c:forEach> </c:forEach> 

2。

 <c:set var="count" value="0" scope="page" /> <c:forEach var="tableEntity" items='${requestScope.tables}'> <c:forEach var="rowEntity" items='${tableEntity.rows}'> <%=count++%> <c:out value="${count}" /> </c:forEach> </c:forEach> 

第一种方法的问题是外层循环有3个项目,内层循环有7个项目,所以每个外层项目的计数从0开始。第二个是编译错误。 这里基本上是我想要的:

 counter = 0; outer for loop inner for loop counter++; //cout/echo/print counter value should start from 0 end inner loop end outer loop 

我只是不完全熟悉的语法。 谢谢

尝试以下操作:

 <c:set var="count" value="0" scope="page" /> //in your loops <c:set var="count" value="${count + 1}" scope="page"/> 

varStatus引用了具有getIndex()方法的LoopTagStatus

所以:

 <c:forEach var="tableEntity" items='${requestScope.tables}' varStatus="outer"> <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="inner"> <c:out value="${(outer.index * fn:length(tableEntity.rows)) + inner.index}" /> </c:forEach> </c:forEach> 

也可以看看:

  • JSP / Servlet的隐藏function

你可以在c:forEach循环中使用varStatus

在你的第一个例子中,你可以让柜台正常工作,如下所示:

 <c:forEach var="tableEntity" items='${requestScope.tables}'> <c:forEach var="rowEntity" items='${tableEntity.rows}' varStatus="count"> my count is ${count.count} </c:forEach> </c:forEach> 

是什么导致我到这个页面是我在一个页面内设置,然后在一个包含页面的内部我做了增量

这是问题

所以为了解决这个问题,当声明variables或增量时,只需使用scope="request"

 //when you set the variale add scope="request" <c:set var="nFilters" value="${0}" scope="request"/> //the increment, it can be happened inside an included page <c:set var="nFilters" value="${nFilters + 1}" scope="request" /> 

希望这可以节省您的时间