【发布时间】:2011-06-19 06:08:13
【问题描述】:
这个问题和我之前的问题有关:
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
我只是不完全熟悉语法。谢谢
【问题讨论】:
-
你得到什么编译器错误?
-
不要这样做。很难写,也更难读。只需创建一个 bean 并使用它。如果您真的需要它:每个循环一个计数器并结合类似的 external*tableEntity.rows.size + inner 怎么样?
-
@maaartinus 你能举个例子吗?
-
我现在找不到,但是很简单:每当 JSP 变得过于复杂时,创建一个 bean(一个具有默认构造函数和所有字段可设置的类),用 Java 实现所需的功能,而不是这个 chevronitis,设置计算字段并获得结果。这里的JSP方案比我想象的要简单,但是一般不要把复杂的计算放在JSP里面。