用循环递增计数器
这个问题与我以前的问题有关:
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" />
希望这可以节省您的时间