如何从 jstl 中的 foreach 循环中获取索引值

2022-08-31 08:53:26

我在对象中设置了一个值,如下所示,request

String[] categoriesList=null;
categoriesList = engine.getCategoryNamesArray();
request.setAttribute("categoriesList", categoriesList );

这就是我在jsp页面中迭代的方式

<% if(request.getAttribute("categoriesList") != null) { %>
<c:forEach var="categoryName" items="${categoriesList}">
   <li><a onclick="getCategoryIndex()" href="#">${categoryName}</a></li>
</c:forEach>
<% }%>

我如何获取每个元素的索引并将其传递给JavaScript函数。onclick="getCategoryIndex()"


答案 1

使用 varStatus 获取索引 c:forEach varStatus 属性

<c:forEach var="categoryName" items="${categoriesList}" varStatus="loop">
    <li><a onclick="getCategoryIndex(${loop.index})" href="#">${categoryName}</a></li>
</c:forEach>

答案 2

我遇到了类似的问题。经过研究,我知道我们有更多的选择。它可以使用基于零的索引或基于一个的索引:varStatus="loop"

  • 使用 0 基本索引${loop.index}
  • 使用 1 个基本索引${loop.count}

例如:

<c:forEach var="currentImage" items="${cityBannerImages}" varStatus="loop">
<picture>
   <source srcset="${currentImage}" media="(min-width: 1000px)"></source>
   <source srcset="${cityMobileImages[loop.count]}" media="(min-width:600px)"></source>
   <img srcset="${cityMobileImages[loop.count]}" alt=""></img>
</picture>
</c:forEach>

有关更多信息,请查看此链接