How to get a index value from foreach loop in jstl

我在 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>
<% }%>

How do I get index of each element and pass it to JavaScript function onclick="getCategoryIndex()".

276436 次浏览

使用 VarStatus获取索引 每个 varStatus 属性

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

您可以这样使用 varStatus属性:-

<c:forEach var="categoryName" items="${categoriesList}" varStatus="myIndex">

Index 将给出索引,这里的 myIndex是一个 LoopTagStatus 循环标签状态对象。

因此,您可以像下面这样将它发送到 javascript 方法:-

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

我也遇到过类似的问题。经过研究,我知道我们有一些更多的选择与 varStatus="loop"。它既可以使用从零开始的索引,也可以使用从一开始的索引:

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

For Example :

<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>

更多信息请查看此 链接

<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>

above line was giving me an error. So I wrote down in below way which is working fine for me.

<a onclick="getCategoryIndex('<c:out value="${myIndex.index}"/>')" href="#">${categoryName}</a>

Maybe someone else might get same error. Look at this guys!

这对我有用:

<c:forEach var="i" begin="1970" end="2000">
<option value="${2000-(i-1970)}">${2000-(i-1970)}
</option>
</c:forEach>