使用JSTL标签自动生成编号主要依赖于<c:forEach> 标签中的varStatus属性,它同属性var一样,创建限定了作用域的变量,不过这个变量描述了当前迭代的状态,是javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。具有以下特性:
特性 | Getter | 描述 |
current | getCurrent() | 当前这次迭代的(集合中的)项 |
index | getIndex() | 当前这次迭代从 0 开始的迭代索引 |
count | getCount() | 当前这次迭代从 1 开始的迭代计数 |
first | isFirst() | 用来表明当前这轮迭代是否为第一次迭代的标志 |
last | isLast() | 用来表明当前这轮迭代是否为最后一次迭代的标志 |
begin | getBegin() | begin 属性值 |
end | getEnd() | end 属性值 |
step | getStep() | step 属性值 |
输出自动编号的例子如下:
<c:forEach item="item" var="var" varStatus="status">
<tr>
<td><c:out value="${status.index+1}"> </c:out></td>
<td>><c:out value="var中的其他属性"> </c:out></td>
</tr>
</c:forEach>
例如,在页面的一个循环列表中加入序号列:
<c:forEach items="${list}" var="list" varStatus="status">
<tr>
<td><c:out value="${(pageNum-1)*numPerPage + status.index+1}"> </c:out></td>
<td>${tl.traceCode}</td>
</tr>
</c:forEach>
status.index+1的前面加上(pageNum-1)*numPerPage的原因是为了让序号可以在页面分页之后可以连续显示。