Use JSTL forEach loop’s varStatus como una ID

2 minutos de lectura

Quiero usar el conteo del bucle JSTL forEach, pero mi código no parece funcionar.

<c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
    <div id="divIDNo${theCount}">
    </div>
</c:forEach>

produce

<div id="[email protected]" >

avatar de usuario
altamente cafeinado

La variable establecida por varStatus es un LoopTagStatus objeto, no un int. Usar:

<div id="divIDNo${theCount.index}">

Para aclarar:

  • ${theCount.index} comienza a contar en 0 a menos que haya configurado el begin atributo
  • ${theCount.count} comienza a contar en 1

  • ${theCount.count} siempre comienza en 1. ${theCount.index} comienza en lo que hayas configurado begin atribuir a. p.ej <c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">

    – vegemite4me

    22 de agosto de 2013 a las 9:23


usarías cualquiera de estos:

Propiedades JSTL c:forEach varStatus

Captador de propiedad Descripción

  • current getCurrent() El elemento (de la colección) para la ronda actual de iteración.

  • index getIndex() El índice de base cero para la ronda actual de iteración.

  • count getCount() El recuento basado en uno para la ronda actual de iteración

  • first isFirst() Indicador que indica si la ronda actual es el primer paso a través de la iteración
  • last isLast() Indicador que indica si la ronda actual es el último paso a través de la iteración

  • begin getBegin() El valor del atributo de inicio

  • end getEnd() El valor del atributo final

  • step getStep() El valor del atributo de paso

avatar de usuario
Natanfan

Puedes probar esto. resultado similar

 <c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
    <div id="divIDNo${theCount.count}"></div>
 </c:forEach>

avatar de usuario
jyoti pani

Realmente me ayudó a generar dinámicamente identificaciones de showDetailItem para el siguiente código.

<af:forEach id="fe1" items="#{viewScope.bean.tranTypeList}" var="ttf" varStatus="ttfVs" > 
<af:showDetailItem  id ="divIDNo${ttfVs.count}" text="#{ttf.trandef}"......>

si ejecutas esta linea <af:outputText value="#{ttfVs}"/> imprime lo siguiente:

{índice=3, cuenta=4, último=falso, primero=falso, final=8, paso=1, comienzo=0}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad