Chcę użyć liczby z pętli JSTL forEach, ale mój kod nie działa.
<c:forEach items="${loopableObject}" var="theObject" varStatus="theCount">
<div id="divIDNo${theCount}">
</div>
</c:forEach>
produkuje
<div id="divIDNojavax.servlet.jsp.jstl.core.LoopTagSupport$1Status@5570e2" >
getIndex()
:)Odpowiedzi:
Zmienna ustawiona przez
varStatus
jestLoopTagStatus
obiektem, a nie int. Posługiwać się:W celu wyjaśnienia:
${theCount.index}
zaczyna liczyć od,0
chyba że ustawiłeśbegin
atrybut${theCount.count}
zaczyna liczyć od1
źródło
${theCount.count}
zawsze zaczyna się od 1.${theCount.index}
zaczyna się od tego, na co ustawiłeśbegin
atrybut. np.<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
użyłbyś dowolnego z tych:
JSTL c: właściwości forEach varStatus
Opis pobierania właściwości
current getCurrent () Element (z kolekcji) dla bieżącej rundy iteracji.
index getIndex () Indeks liczony od zera dla bieżącej rundy iteracji.
count getCount () Licznik (liczony od jedności) dla bieżącej rundy iteracji
last isLast () Flaga wskazująca, czy bieżąca runda jest ostatnim przebiegiem iteracji
begin getBegin () Wartość atrybutu begin
end getEnd () Wartość atrybutu end
step getStep () Wartość atrybutu step
źródło
Możesz tego spróbować. podobny wynik
źródło
To naprawdę pomogło mi w dynamicznym generowaniu identyfikatorów
showDetailItem
dla poniższego kodu.jeśli wykonasz tę linię,
<af:outputText value="#{ttfVs}"/>
wyświetli się poniżej:źródło
varStatus.count
), tylko znacznie mniej czytelną. Po co zawracać sobie głowę czytaniem odpowiedzi innych osób? ;)