Как получить значение индекса из цикла foreach в 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>
<% }%>

как получить индекс каждого элемента и передать его в функцию JavaScript onclick="getCategoryIndex()".

4 ответов


использовать varStatus получить индекс c: свойства foreach varStatus

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

можно использовать такой:-

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

myIndex.индекс даст вам индекс. Вот!--3--> - это LoopTagStatus


я сталкиваюсь с подобной проблемой теперь я понимаю, что у нас есть еще несколько вариантов : varStatus= "loop", здесь будет переменная loop, которая будет содержать индекс lop.

Он может использовать для использования для чтения для базового индекса Zeor или 1 одного базового индекса.

${loop.count}` it will give 1 starting base index.

${loop.index} it will give 0 base index as normal Index of array начать с 0.

Например :

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

для получения дополнительной информации см. Это ссылке


${categoryName}

над строкой была ошибка для меня. поэтому я записал ниже, что отлично работает для меня. ') "href=" # " >${categoryName}

может быть кто-то другой может сделать ту же ошибку. Посмотрите на этих ребят!!