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>
屬性 | 類型 | 描述 |
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>
屬性 | 類型 | 描述 |
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>
屬性 | 類型 | 描述 |
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。
推薦閱讀:
- springmvc HttpServletRequest 如何獲取c:forEach的值
- Spring MVC使用jstl 標簽c:forEach 遍歷輸出雙層嵌套List的數據方式
- MyBatis中關於SQL的寫法總結
- 如何兩步解決maven依賴導入失敗的問題
- ajax jquery實現頁面某一個div的刷新效果