这个问题与我之前的问题有关:
Jsp iterate trough object list
我想在我的 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 的隐藏特性
count
属性,则 scope="page"
是多余的范围,然后您可以安全地删除它)。
[jsp]
标记并单击 info
链接或在单击 [jsp]
标记后面对 all questions with the same tag 时单击 about the jsp tag
链接来访问它。
您可以在 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>
导致我进入此页面的原因是我在一个页面内设置,然后在包含的页面内部进行了增量
这就是问题所在
所以要解决这样的问题,只需在声明变量或增量时使用 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" />
希望这可以节省您的时间
不定期副业成功案例分享
count
分配给 JavaScript 变量?