2015-11-17 54 views
3

我在創建jsp文件時遇到了一些問題。我想用JSTL來以某種方式顯示一個集合。首先,我在jsp中創建了一個java代碼:JSTL for each tag not iteraring over

<% for(int i = 0; i < ((List<BookPosition>)request.getAttribute("books")).size(); i+=1) { %> 
     <label>Test</label> 
<% } %> 

然後,我創建了一個JSTL代碼片段。

<c:forEach var="book" items="$(books)"> 
     <label>Test</label> 
</c:forEach> 

不幸的是,第一個輸出正確數量的標籤(24)和JSTL的版本只有一個標籤(儘管集合包含exaclty 24個項目)。

爲什麼?

+0

您認爲'$(books)'代表什麼?你爲什麼這麼認爲? –

+0

不知道。我是JSP/JSTL的新手,並發現了一些片段,在servlet端我應該設置:request.setAttribute(「books」,myBookCollection);',使用調度器將請求轉發到jsp,然後循環應該工作。 Fe:http://stackoverflow.com/a/4255741/5417374 – pwas

+2

看起來您使用圓括號()而不是大括號{} - 嘗試$ {books} – BlakeP

回答

2

EL expressions是這樣寫的:${ myExpression }

<c:forEach var="book" items="${ books }"> 
     <label>Test</label> 
</c:forEach> 

現在,如果你也想跟蹤打印值的數量,你可以在你的JSTL使用通過varStatus屬性計數器核心標籤

<c:forEach var="book" items="${ books }" varStatus="counter"> 
     <label><c:out value="${ counter.count }"/>. Test</label> 
</c:forEach>