Gunakan varStatus loop forEach JSTL sebagai ID

104

Saya ingin menggunakan hitungan dari loop JSTL forEach, tetapi kode saya sepertinya tidak berfungsi.

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

menghasilkan

<div id="divIDNojavax.servlet.jsp.jstl.core.LoopTagSupport$1Status@5570e2" >
Mark W.
sumber
9
Ini adalah kelas 'javadoc: download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/… Lihat metode pengambil apa yang ditawarkannya. Ya, antara lain ada getIndex():)
BalusC

Jawaban:

259

Variabel yang ditetapkan oleh varStatusadalah LoopTagStatusobjek, bukan int. Menggunakan:

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

Untuk memperjelas:

  • ${theCount.index}mulai menghitung 0kecuali Anda telah menyetel beginatributnya
  • ${theCount.count} mulai menghitung pada 1
berkafein tinggi
sumber
21
${theCount.count} selalu dimulai pada 1. ${theCount.index}dimulai pada apa pun yang Anda atur beginatributnya. misalnya<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
vegemite4me
8

Anda akan menggunakan salah satu dari ini:

JSTL c: forEach varStatus properti

Deskripsi Pengambil Properti

  • current getCurrent () Item (dari koleksi) untuk putaran iterasi saat ini.

  • index getIndex () Indeks berbasis nol untuk putaran iterasi saat ini.

  • count getCount () Jumlah satu berbasis untuk putaran iterasi saat ini

  • first isFirst () Flag yang menunjukkan apakah putaran saat ini adalah yang pertama melewati iterasi
  • Last isLast () Flag menunjukkan apakah putaran saat ini adalah yang terakhir melewati iterasi

  • begin getBegin () Nilai atribut mulai

  • end getEnd () Nilai atribut end

  • step getStep () Nilai atribut step

diego matos - keke
sumber
4

Anda bisa mencobanya. hasil serupa

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

Ini sangat membantu saya untuk secara dinamis menghasilkan id showDetailItemuntuk kode di bawah ini.

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

jika Anda menjalankan baris ini <af:outputText value="#{ttfVs}"/>mencetak di bawah ini:

{indeks = 3, hitung = 4, terakhir = salah, pertama = salah, akhir = 8, langkah = 1, mulai = 0}

jyoti pani
sumber
@HenryKeiter ada jawaban nyata di sini. Pemformatan yang buruk hanya menyembunyikan semua html sampai saya memperbaikinya.
Dan Is Fiddling By Firelight
Ini memberikan jawaban yang sama persis seperti yang telah diberikan 3 tahun sebelumnya (penggunaan varStatus.count), hanya saja kurang terbaca. Mengapa repot-repot membaca jawaban orang lain? ;)
rustyx