<c:forEach>

"=""begin =""begin >c:forEach

<c:forEach> 為循環控制,它可以將集合(Collection)中的成員循序瀏覽一遍。運作方式為當條件符合時,就會持續重複執行<c:forEach>的本體內容。
語法
語法1:疊代一集合對象之所有成員
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"]
[begin="begin"] [end="end"] [step="step"]>
本體內容
<
/c:forEach>
語法2:疊代指定的次數
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]>
本體內容
</c:forEach>
屬性
名 稱
說 明
EL
類型
必須
默認值
var
用來存放現在指到的成員
N
String


items
被疊代的集合對象
Y
Arrays
Collection
Iterator
Enumeration
Map
String


varStatus
用來存放現在指到的相關成員信息
N
String


begin
開始的位置
Y
int

0
end
結束的位置
Y
int

最後一個成員
step
每次疊代的間隔數
Y
int

1
限制
·假若有begin屬性時,begin必須大於等於 0
·假若有end屬性時,必須大於begin
·假若有step屬性時,step必須大於等於0
Null 和 錯誤處理
·假若items為null時,則表示為一空的集合對象
·假若begin大於或等於items時,則疊代不運算
說明
如果要循序瀏覽一個集合對象,並將它的內容顯示出來,就必須有items屬性。
範例
下面的範例 Core_forEach.jsp是將數組中的成員一個個顯示出來的:
Core_forEach.jsp
<%@ page contentType="text/html;charset=GB2312 " %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>CH7 - Core_forEach.jsp</title>
</head>
<body>
<h2><c:out value="<c:forEach> 的用法" /></h2>
<%
String atts[] = new String [5];
atts[0]="hello";
atts[1]="this";
atts[2]="is";
atts[3]="a";
atts[4]="pen";
request.setAttribute("atts", atts);
%>
<c:forEach items="$" var="item" >
$</br>
</c:forEach>
</body>
</html>
在上述範例中,筆者先產生一個字元串數組,然後將此數組atts儲存至Request的屬性範圍中,再用<c:forEach>將它循序瀏覽一遍。這裡items表示被瀏覽的集合對象,var用來存放指定的集合對象中成員,最後使用<c:out>將item的內容顯示出來,執行結果如圖-8所示。
注意
varName的範圍只存在<c:forEach>的本體中,如果超出了本體,則不能再取得varName的值。上個例子中,若$ 是在</c:forEach>之後執行時,如:
<c:forEach items="$" var="item" >
</c:forEach>
$</br>
$則不會顯示item的內容。
<c:forEach>除了支持數組之外,還有標準J2SE的集合類型,例如:ArrayList、List、LinkedList、Vector、Stack和Set 等等;另外還包括java.util.Map類的對象,例如:HashMap、Hashtable、Properties、Provider和Attributes。
<c:forEach>還有begin、end和step這三種屬性:begin主要用來設定在集合對象中開始的位置(注意:第一個位置為0);end用來設定結束的位置;而step則是用來設定現在指到的成員和下一個將被指到成員之間的間隔。我們將之前的範例改成如下:
Core_forEach1.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>CH7 - Core_forEach1.jsp</title>
</head>
<body>
<h2><c:out value="<c:forEach> begin、end和step的用法" /></h2>
<%String atts[] = new String [5];
atts[0]="hello";
atts[1]="this";
atts[2]="is";
atts[3]="a";
atts[4]="pen";
request.setAttribute("atts", atts);
%>
<c:forEach items="$" var="item" begin="1" end="4" step="2" >
$</br>
</c:forEach>
</body>
</html>
<c:forEach>中指定的集合對象atts將會從第2個成員開始到第5個成員,並且每執行一次循環都會間隔一個成員瀏覽。因此結果是只顯示atts[1]和atts[3]的內容,如圖7-9所示。

相關詞條

相關搜尋

熱門詞條

聯絡我們