Как получить значение индекса из цикла 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}
может быть кто-то другой может сделать ту же ошибку. Посмотрите на этих ребят!!