ใช้ JSTL forEach แต่ละลูป varStatus เป็น ID


104

ฉันต้องการใช้การนับจาก JSTL forEach แต่ละลูป แต่รหัสของฉันใช้งานไม่ได้

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

ผลิต

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

9
นี่คือคลาส 'javadoc: download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/…ดูวิธีการ getter ที่มีให้ ใช่ในหมู่คนอื่น ๆ มีgetIndex():)
BalusC

คำตอบ:


259

ตัวแปรที่กำหนดโดยvarStatusเป็นLoopTagStatusอ็อบเจ็กต์ไม่ใช่ int ใช้:

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

ชี้แจง:

  • ${theCount.index}เริ่มนับที่0เว้นแต่คุณจะตั้งค่าbeginแอตทริบิวต์
  • ${theCount.count} เริ่มนับเวลา 1

21
${theCount.count} เริ่มต้นที่ 1 เสมอเริ่มจาก${theCount.index}สิ่งที่คุณตั้งค่าbeginแอตทริบิวต์ไว้ เช่น<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
vegemite4me

8

คุณจะใช้สิ่งเหล่านี้:

JSTL c: forEach แต่ละคุณสมบัติ varStatus

คำอธิบายคุณสมบัติ Getter

  • getCurrent ปัจจุบัน () รายการ (จากคอลเลกชัน) สำหรับรอบปัจจุบันของการวนซ้ำ

  • ดัชนี getIndex () ดัชนีที่อิงเป็นศูนย์สำหรับรอบปัจจุบันของการวนซ้ำ

  • นับ getCount () การนับหนึ่งตามรอบปัจจุบันของการวนซ้ำ

  • อันดับแรก isFirst () แฟล็กที่ระบุว่ารอบปัจจุบันเป็นรอบแรกผ่านการวนซ้ำหรือไม่
  • last isLast () แฟล็กระบุว่ารอบปัจจุบันเป็นรอบสุดท้ายผ่านการวนซ้ำหรือไม่

  • start getBegin () ค่าของแอตทริบิวต์ start

  • end getEnd () ค่าของแอตทริบิวต์ end

  • step getStep () ค่าของแอตทริบิวต์ step



1

มันช่วยให้ฉันสร้างรหัสshowDetailItemสำหรับโค้ดด้านล่างแบบไดนามิก

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

หากคุณดำเนินการบรรทัดนี้จะ<af:outputText value="#{ttfVs}"/>พิมพ์ด้านล่าง:

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


@HenryKeiter มีคำตอบที่แท้จริงที่นี่ การจัดรูปแบบไม่ถูกต้องมี html ทั้งหมดซ่อนอยู่จนกว่าฉันจะแก้ไข
Dan Is Fiddling By Firelight

สิ่งนี้ให้คำตอบเดียวกับที่ให้ไว้แล้วเมื่อ 3 ปีก่อน (ใช้งานvarStatus.count) อ่านได้น้อยกว่ามาก ทำไมต้องรำคาญอ่านคำตอบของคนอื่น? ;)
rustyx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.