SpringMVC學習之JSTL條件行為和遍歷行為詳解

JSTL條件行為和遍歷行為

JSTL的條件行為標簽有四個:if,choose,when,otherwise標簽

1、if標簽

是對某一個條件進行測試,結果為true就執行它的body content。測試結果保存在Boolean對象中,並創建有屆變量來保存這個Boolean對象。利用var和scope屬性分別定義有界變量的名稱和范圍。

兩種形式:

1) 沒有body content

<c:if test="condition" var="varName" [scope="page|request|session|application"] />

此情況的var 一般是通過其他標簽在同一個JSP的後續階段再進行測試

2)

<c:if test="conditin" [var="varName"] [scope="page|request|session|application"] >
body content
</c:if>
if標簽的屬性
屬性 類型 描述
test+ 佈爾 決定處理任何現有bodycontent的測試條件
var 字符串 引用測試條件值的有界變量名稱;var的類型為Boolean
scope 字符串 var定義的有界變量的范圍

PS:模擬else的情況可一使用兩次if,一次正常,一次相反

2、choose when 和otherwise標簽

choose,when和Java中的switch,case類似

choose標簽中必須嵌有一個或者多個when標簽,每個when標簽都表示一種可以計算和處理的情況,otherwise標簽則用於默認的條件塊,假如沒有任何一個when標簽的處理結果為true,則otherwise將被處理,otherwise必須放在最後一個when之後.

choose和otherwise標簽沒有屬性,when標簽必須帶有定義測試條件的test屬性,用來決定是否處理bodycontent.

3、遍歷行為forEach

3.1 forEach 會無數次的反復遍歷body content 或者對象的集合

可以被遍歷的對象包括java.util.Collection,java.util.Map的全部實現,以及對象數組或者主類型,有兩種形式:

1) 固定的次數重復body content

<c:forEach [var="varName"] begin="begin" end="end" step="step" >
body content
</c:forEach>

2) 用於遍歷對象集合

<c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [ end="end"] [step="step"]>
body content
</c:forEach>
forEach標簽的屬性
屬性 類型 描述
var 字符串 引用遍歷當前項目的有界變量名稱
items+ 支持的任意類型 遍歷的對象的集合
varStatus 字符串 保存遍歷狀態的有界變量的名稱,類型值是javax.servlet.jsp.jstl.core.LoopTagStatus,帶有count屬性,返回當前的次數
begin+ 整數 如果指定items,遍歷將從指定的索引處的項目開始,如果沒有指定items,遍歷將從設定的索引值開始,如果指定begin必須大於等於0
end+ 整數 如果指定items,遍歷將從指定的索引處的項目結束,如果沒有指定items,遍歷將從設定的索引值結束
step+ 整數 遍歷將隻處理間隔指定step的項目,從一個項目開始,在這種情況下,step的值必須大於等於1

PS:var創建的有界變量的名稱隻在該forEach中使用,一到</c:forEach>處就會被刪除。

3.2 forTokens標簽

forTokens標簽用來遍歷以特定的分隔符隔開的令牌,用delims指定的分隔符,將元素分開

語法如下:

<c:forTokens items ="stringOfTokens" delims="delimiters" [var="varName" ] [varStatus="varStatusname"]  [begin="begin"] [end="end" ] [step="step"]>
body content
</c:forTokens>
forTokens標簽的屬性
屬性 類型 描述
var 字符串 引用遍歷當前項目的有界變量名稱
items+ 支持的任意類型 遍歷的對象的集合
varStatus 字符串 保存遍歷狀態的有界變量的名稱,類型值是javax.servlet.jsp.jstl.core.LoopTagStatus,帶有count屬性,返回當前的次數
begin+ 整數 如果指定items,遍歷將從指定的索引處的項目開始,如果沒有指定items,遍歷將從設定的索引值開始,如果指定begin必須大於等於0
end+ 整數 如果指定items,遍歷將從指定的索引處的項目結束,如果沒有指定items,遍歷將從設定的索引值結束
step+ 整數 遍歷將隻處理間隔指定step的token,從一個token開始,在這種情況下,step的值必須大於等於1
delims+ 字符串 一組分隔符

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: