Sử dụng varStatus của vòng lặp JSTL forEach làm ID


104

Tôi muốn sử dụng số lượng từ vòng lặp JSTL forEach, nhưng mã của tôi dường như không hoạt động.

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

sản xuất

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

9
Đây là lớp 'javadoc: download.oracle.com/javaee/6/api/javax/servlet/jsp/jstl/core/… Hãy xem nó cung cấp các phương thức getter nào. Vâng, những người khác có một getIndex():)
BalusC

Câu trả lời:


259

Biến được đặt bởi varStatuslà một LoopTagStatusđối tượng, không phải là int. Sử dụng:

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

Làm rõ:

  • ${theCount.index}bắt đầu đếm lúc 0trừ khi bạn đã đặt beginthuộc tính
  • ${theCount.count} bắt đầu đếm lúc 1

21
${theCount.count} luôn bắt đầu từ 1. ${theCount.index}bắt đầu từ bất kỳ thứ gì bạn đã đặt beginthuộc tính. ví dụ<c:forEach var="foo" items="${bar}" begin="5" varStatus="theCount">
vegemite4me

8

bạn sẽ sử dụng bất kỳ cái nào sau đây:

JSTL c: forEach thuộc tính varStatus

Mô tả người nhận tài sản

  • hiện tại getCurrent () Mục (từ bộ sưu tập) cho vòng lặp hiện tại.

  • index getIndex () Chỉ số dựa trên 0 cho vòng lặp hiện tại.

  • count getCount () Số đếm một lần cho vòng lặp hiện tại

  • cờ isFirst () đầu tiên cho biết vòng hiện tại có phải là vòng đầu tiên qua vòng lặp hay không
  • Cờ last isLast () cho biết vòng hiện tại có phải là vòng cuối cùng qua lần lặp hay không

  • begin getBegin () Giá trị của thuộc tính begin

  • end getEnd () Giá trị của thuộc tính end

  • step getStep () Giá trị của thuộc tính step


4

Bạn có thể thử điều này. kết quả tương tự

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

1

Nó thực sự đã giúp tôi tự động tạo id showDetailItemcho đoạn mã dưới đây.

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

nếu bạn thực hiện dòng này sẽ <af:outputText value="#{ttfVs}"/>in ra bên dưới:

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


@HenryKeiter có một câu trả lời thực sự ở đây. Định dạng tồi chỉ có tất cả html bị ẩn cho đến khi tôi sửa nó.
Dan là Fiddling Bằng ánh lửa

Điều này cung cấp câu trả lời chính xác giống như đã được cung cấp 3 năm trước đó (sử dụng varStatus.count), chỉ ít đọc hơn nhiều. Tại sao phải đọc câu trả lời của người khác? ;)
gỉ sét
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.