JSTL forEach loop'un varStatus'unu bir kimlik olarak kullanın


104

JSTL forEach döngüsündeki sayımı kullanmak istiyorum, ancak kodum çalışmıyor gibi görünüyor.

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

üretir

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

9
İşte sınıf 'javadoc: download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/… Sunduğuna bakın. Evet, diğerlerinin yanı sıra getIndex():)
BalusC

Yanıtlar:


259

Tarafından ayarlanan değişken varStatusbir LoopTagStatusnesnedir, int değil. Kullanım:

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

Netleştirmek için:

  • ${theCount.index}özniteliği 0ayarlamadıkça saymaya başlarbegin
  • ${theCount.count} saymaya başlar 1

21
${theCount.count} her zaman 1'den ${theCount.index}başlar. beginÖzniteliği ayarladığınızdan başlar . eg<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
vegemite4me

8

bunlardan herhangi birini kullanırsınız:

JSTL c: forEach varStatus özellikleri

Emlak Alıcısı Açıklaması

  • current getCurrent () Geçerli yineleme turu için (koleksiyondan) öğe.

  • dizin getIndex () Geçerli yineleme turu için sıfır tabanlı dizin.

  • count getCount () Geçerli yineleme turu için bir tabanlı sayı

  • ilki, geçerli turun yinelemeden ilk geçiş olup olmadığını gösteren İlk () bayraktır.
  • last isLast () Geçerli turun yinelemeden son geçiş olup olmadığını gösteren bayrak

  • begin getBegin () begin özniteliğinin değeri

  • end getEnd () Bitiş özniteliğinin değeri

  • step getStep () step özniteliğinin değeri


4

Bunu deneyebilirsin. benzer sonuç

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

1

showDetailItemAşağıdaki kod için dinamik olarak kimlik oluşturmama gerçekten yardımcı oldu .

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

Bu satırı <af:outputText value="#{ttfVs}"/>yürütürseniz aşağıdakini yazdırır:

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


@HenryKeiter burada gerçek bir cevap var. Kötü biçimlendirme, ben onu düzeltene kadar tüm html'leri gizledi.
Dan Is Fiddling By Firelight

Bu, 3 yıl önce (kullanım varStatus.count) verilenle aynı yanıtı sağlar , yalnızca çok daha az okunabilir. Neden başkalarının cevaplarını okumakla uğraşasınız? ;)
rustyx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.