Как получить значение индекса из цикла 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()"
.
Ответы
Ответ 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", здесь будет цикл, который будет содержать индекс lop.
Он может использоваться для чтения для базового индекса Zeor или одного базового индекса.
${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>
Для получения дополнительной информации см. ссылку
Ответ 3
Вы можете использовать атрибут varStatus
следующим образом: -
<c:forEach var="categoryName" items="${categoriesList}" varStatus="myIndex">
myIndex.index предоставит вам индекс. Здесь myIndex
является объектом LoopTagStatus.
Следовательно, вы можете отправить это на свой javascript-метод следующим образом: -
<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>
Ответ 4
<a onclick="getCategoryIndex(${myIndex.index})" href="#">${categoryName}</a>
выше линия давала мне ошибку. Таким образом, я записал ниже, который работает хорошо для меня.
<a onclick="getCategoryIndex('<c:out value="${myIndex.index}"/>')" href="#">${categoryName}</a>
Может быть, кто-то еще может получить такую же ошибку. Посмотрите на это, ребята!