Utilizza varStatus del ciclo JSTL forEach come ID


104

Voglio usare il conteggio dal ciclo JSTL forEach, ma il mio codice non sembra funzionare.

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

produce

<div id="divIDNojavax.servlet.jsp.jstl.core.LoopTagSupport$1Status@5570e2" >

9
Ecco javadoc della classe: download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/… Guarda quali metodi getter offre. Sì, tra gli altri c'è un getIndex():)
BalusC

Risposte:


259

La variabile impostata da varStatusè un LoopTagStatusoggetto, non un int. Uso:

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

Chiarire:

  • ${theCount.index}inizia a contare da a 0meno che tu non abbia impostato l' beginattributo
  • ${theCount.count} inizia a contare alle 1

21
${theCount.count} inizia sempre da 1. ${theCount.index}inizia da qualunque cosa tu abbia impostato l' beginattributo. ad esempio<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
vegemite4me

8

useresti uno di questi:

JSTL c: forEach proprietà varStatus

Descrizione proprietà getter

  • current getCurrent () L'elemento (dalla raccolta) per il ciclo di iterazione corrente.

  • index getIndex () L'indice a base zero per il ciclo di iterazione corrente.

  • count getCount () Il conteggio a base uno per il ciclo di iterazione corrente

  • first isFirst () Flag che indica se il round corrente è il primo passaggio dell'iterazione
  • last isLast () Flag che indica se il round corrente è l'ultimo passaggio dell'iterazione

  • begin getBegin () Il valore dell'attributo begin

  • end getEnd () Il valore dell'attributo end

  • step getStep () Il valore dell'attributo step


4

Puoi provare questo. risultato simile

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

1

Mi ha davvero aiutato a generare dinamicamente gli ID showDetailItemper il codice seguente.

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

se esegui questa riga <af:outputText value="#{ttfVs}"/>stampa quanto segue:

{index = 3, count = 4, last = false, first = false, end = 8, step = 1, begin = 0}


@HenryKeiter c'è una vera risposta qui. Una cattiva formattazione aveva nascosto tutto l'html fino a quando non l'ho riparato.
Dan sta giocherellando con Firelight

Ciò fornisce la stessa identica risposta già fornita 3 anni prima (uso varStatus.count), solo molto meno leggibile. Perché preoccuparsi di leggere le risposte degli altri? ;)
rustyx
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.