SpringMVC學(xué)習(xí)之JSTL條件行為和遍歷行為詳解
JSTL條件行為和遍歷行為
JSTL的條件行為標(biāo)簽有四個(gè):if,choose,when,otherwise標(biāo)簽
1、if標(biāo)簽
是對(duì)某一個(gè)條件進(jìn)行測(cè)試,結(jié)果為true就執(zhí)行它的body content。測(cè)試結(jié)果保存在Boolean對(duì)象中,并創(chuàng)建有屆變量來(lái)保存這個(gè)Boolean對(duì)象。利用var和scope屬性分別定義有界變量的名稱(chēng)和范圍。
兩種形式:
1) 沒(méi)有body content
<c:if test="condition" var="varName" [scope="page|request|session|application"] />
此情況的var 一般是通過(guò)其他標(biāo)簽在同一個(gè)JSP的后續(xù)階段再進(jìn)行測(cè)試
2)
<c:if test="conditin" [var="varName"] [scope="page|request|session|application"] > body content </c:if>
| 屬性 | 類(lèi)型 | 描述 |
| test+ | 布爾 | 決定處理任何現(xiàn)有bodycontent的測(cè)試條件 |
| var | 字符串 | 引用測(cè)試條件值的有界變量名稱(chēng);var的類(lèi)型為Boolean |
| scope | 字符串 | var定義的有界變量的范圍 |
PS:模擬else的情況可一使用兩次if,一次正常,一次相反
2、choose when 和otherwise標(biāo)簽
choose,when和Java中的switch,case類(lèi)似
choose標(biāo)簽中必須嵌有一個(gè)或者多個(gè)when標(biāo)簽,每個(gè)when標(biāo)簽都表示一種可以計(jì)算和處理的情況,otherwise標(biāo)簽則用于默認(rèn)的條件塊,假如沒(méi)有任何一個(gè)when標(biāo)簽的處理結(jié)果為true,則otherwise將被處理,otherwise必須放在最后一個(gè)when之后.
choose和otherwise標(biāo)簽沒(méi)有屬性,when標(biāo)簽必須帶有定義測(cè)試條件的test屬性,用來(lái)決定是否處理bodycontent.
3、遍歷行為forEach
3.1 forEach 會(huì)無(wú)數(shù)次的反復(fù)遍歷body content 或者對(duì)象的集合
可以被遍歷的對(duì)象包括java.util.Collection,java.util.Map的全部實(shí)現(xiàn),以及對(duì)象數(shù)組或者主類(lèi)型,有兩種形式:
1) 固定的次數(shù)重復(fù)body content
<c:forEach [var="varName"] begin="begin" end="end" step="step" > body content </c:forEach>
2) 用于遍歷對(duì)象集合
<c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [ end="end"] [step="step"]> body content </c:forEach>
| 屬性 | 類(lèi)型 | 描述 |
| var | 字符串 | 引用遍歷當(dāng)前項(xiàng)目的有界變量名稱(chēng) |
| items+ | 支持的任意類(lèi)型 | 遍歷的對(duì)象的集合 |
| varStatus | 字符串 | 保存遍歷狀態(tài)的有界變量的名稱(chēng),類(lèi)型值是javax.servlet.jsp.jstl.core.LoopTagStatus,帶有count屬性,返回當(dāng)前的次數(shù) |
| begin+ | 整數(shù) | 如果指定items,遍歷將從指定的索引處的項(xiàng)目開(kāi)始,如果沒(méi)有指定items,遍歷將從設(shè)定的索引值開(kāi)始,如果指定begin必須大于等于0 |
| end+ | 整數(shù) | 如果指定items,遍歷將從指定的索引處的項(xiàng)目結(jié)束,如果沒(méi)有指定items,遍歷將從設(shè)定的索引值結(jié)束 |
| step+ | 整數(shù) | 遍歷將只處理間隔指定step的項(xiàng)目,從一個(gè)項(xiàng)目開(kāi)始,在這種情況下,step的值必須大于等于1 |
PS:var創(chuàng)建的有界變量的名稱(chēng)只在該forEach中使用,一到</c:forEach>處就會(huì)被刪除。
3.2 forTokens標(biāo)簽
forTokens標(biāo)簽用來(lái)遍歷以特定的分隔符隔開(kāi)的令牌,用delims指定的分隔符,將元素分開(kāi)
語(yǔ)法如下:
<c:forTokens items ="stringOfTokens" delims="delimiters" [var="varName" ] [varStatus="varStatusname"] [begin="begin"] [end="end" ] [step="step"]> body content </c:forTokens>
| 屬性 | 類(lèi)型 | 描述 |
| var | 字符串 | 引用遍歷當(dāng)前項(xiàng)目的有界變量名稱(chēng) |
| items+ | 支持的任意類(lèi)型 | 遍歷的對(duì)象的集合 |
| varStatus | 字符串 | 保存遍歷狀態(tài)的有界變量的名稱(chēng),類(lèi)型值是javax.servlet.jsp.jstl.core.LoopTagStatus,帶有count屬性,返回當(dāng)前的次數(shù) |
| begin+ | 整數(shù) | 如果指定items,遍歷將從指定的索引處的項(xiàng)目開(kāi)始,如果沒(méi)有指定items,遍歷將從設(shè)定的索引值開(kāi)始,如果指定begin必須大于等于0 |
| end+ | 整數(shù) | 如果指定items,遍歷將從指定的索引處的項(xiàng)目結(jié)束,如果沒(méi)有指定items,遍歷將從設(shè)定的索引值結(jié)束 |
| step+ | 整數(shù) | 遍歷將只處理間隔指定step的token,從一個(gè)token開(kāi)始,在這種情況下,step的值必須大于等于1 |
| delims+ | 字符串 | 一組分隔符 |
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Java日志框架slf4j作用及其實(shí)現(xiàn)原理
日志記錄是應(yīng)用程序運(yùn)行中必不可少的一部分。這篇文章主要介紹了淺談Java日志框架slf4j作用及其實(shí)現(xiàn)原理,SLF4J是一個(gè)日志框架抽象層,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03
springboot?@PostConstruct無(wú)效的解決
這篇文章主要介紹了springboot?@PostConstruct無(wú)效的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
基于SpringBoot實(shí)現(xiàn)上傳2種方法工程代碼實(shí)例
這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)上傳工程代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08

