tag lib java jsp for-loop foreach jstl

lib - jstl java



Cómo obtener un valor de índice del bucle foreach en jstl (4)

$ {categoryName}

la línea de arriba estaba dando error para mí. entonces escribí abajo de manera que funciona bien para mí. '') "href =" # "> $ {categoryName}

Puede ser que alguien más tenga el mismo error. ¡Mira esto chicos!

Tengo un valor establecido en el objeto de request como el siguiente,

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

y así es como repito en la página jsp

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

¿Cómo obtengo el índice de cada elemento y lo paso a la función de JavaScript onclick="getCategoryIndex()" .


Me enfrento a un problema similar ahora entiendo que tenemos alguna opción más: varStatus = "loop", Here will be loop variable que contendrá el índice de lop.

Se puede usar para leer en el índice base de Zeor o en 1 índice base.

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

${loop.index} it will give 0 base index as normal Index of array comienza desde 0.

Por ejemplo :

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

Para obtener más información, consulte este link


Puede usar el atributo varStatus esta manera: -

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

myIndex.index te dará el índice. Aquí myIndex es un objeto varStatus .

Por lo tanto, puede enviar eso a su método javascript de esta manera: -

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


use varStatus para obtener el índice c: para cada propiedad varStatus

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