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.