You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP中<c:forEach>如何输出数组索引而非总长度?

问题描述

开发购物车(Cart)功能时,需要为每条订单打印对应的行号。目前使用<c:forEach>遍历订单列表,但通过${requestScope.cartsize}输出的是数组总长度,导致所有订单行显示相同的数值(例如数组长度为3时,所有行都显示3)。需要实现行号依次显示为1、2、3、4...的效果。

相关代码:

Cart is having:<br>
<c:forEach var="item" items="${sessionScope.cart.cupcakeList}">
    Bottom: ${item.bottom.name} Topping: ${item.top.name} Price ${item.quantity} Order line number: ${requestScope.cartsize}
    <form action="addtocart"><button name="removeFromCart" value="${requestScope.cartsize}"type="submit">Fjern fra kurv</button></form><br>
</c:forEach>
解决方案

使用<c:forEach>的varStatus属性即可获取当前遍历项的索引,由于索引默认从0开始,只需给索引加1就能得到从1开始的行号。

修改后的代码如下:

Cart is having:<br>
<c:forEach var="item" items="${sessionScope.cart.cupcakeList}" varStatus="loopStatus">
    Bottom: ${item.bottom.name} Topping: ${item.top.name} Price ${item.quantity} Order line number: ${loopStatus.index + 1}
    <form action="addtocart"><button name="removeFromCart" value="${loopStatus.index}" type="submit">Fjern fra kurv</button></form><br>
</c:forEach>

关键说明:

  • 添加varStatus="loopStatus":该属性会创建一个LoopTagStatus对象,包含当前遍历的状态信息(如索引、计数等)。
  • ${loopStatus.index + 1}:index返回当前项的索引(从0开始),加1后得到从1开始的连续行号。
  • 删除按钮的value改为${loopStatus.index}:如果需要根据索引删除对应项,这里应该传递当前项的索引而非总长度,确保删除操作能定位到正确的订单行。

内容的提问来源于stack exchange,提问作者Narj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:01:20