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" >

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

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


4

Anda bisa mencobanya. hasil serupa

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

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}


@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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.