?
此標簽庫可以分為三種類型:條件、循環、轉發/重定向。
一.) 條件類型
-
logic:empty和logic:notEmpty
logic:empty標簽判斷腳本變量是否為null,是否是一個空的字符串(長度為0),是否是一個空的collection或map(調用isEmpty()方法來判斷)。logic:notEmpty標簽類似。
?<logic:empty name="myBean"> ?? The bean is missing ?</logic:empty> ?<logic:notEmpty name="myBean"> ?? The bean is not missing ?</logic:notEmpty>
|
上段代碼表示當一個名為myBean的bean在所有的scope中都不存在時,輸出The bean is missing;存在的話輸出The bean is not missing。
此標簽有三個屬性:name、property和scope。
-
logic:equal, logic:notEqual, logic:lessThan, logic:greaterThan,logic:lessEqual, and logic:greaterEqual
這堆logic:*equal*標簽從名字上就能知道意思,它們使用起來有些笨拙。
有如下屬性:name、property、scope、value、cookie、header、parameter。
?<logic:equal name="bean" property="doubleProperty" value="<%= doub1 %>"> ??? equal ?</logic:equal> ?<logic:greaterEqual name="bean" property="doubleProperty" value="<%= doub1 %>"> ??? greaterEqual ?</logic:greaterEqual>?
|
-
logic:present和logic:notPresent
檢查header、request parameter、cookie、JavaBean或JavaBean propertie是否存在且不等于null。另外還可以檢查當前用戶的身份,使用屬性user和role。
其它的屬性有:name、property、scope、cookie、header、parameter。
?<logic:notPresent name="myBean" ?property="prop"? scope="page"> ?The bean property bean.prop is present ?</logic:notPresent>
|
上段代碼檢查在page作用域內名為myBean的bean是否有一個prop屬性。
-
logic:match和logic:notMatch
比較兩字符串是否相等,可以比較字符串的開始的、結尾的或其中的某個部分。
location屬性:指定從某個位置開始進行比較。
其它的屬性有:name、property、scope、value、cookie、header、parameter。
下面的例子是檢查瀏覽器類型:
?<logic:match header="User-Agent" value="Mozilla"> ? Mozilla! ?</logic:match> ?<logic:notMatch header="User-Agent" value="Mozilla"> ? Not Mozilla :( ?</logic:notMatch>
|
檢查bean屬性是否匹配"hello world"字符串:
?<logic:match name="bean" property="stringProperty" value="hello world"> ? Hello World! ?</logic:match> ?<logic:notMatch name="bean" property="stringProperty" value="hello world"> ? I'm so sad and lonely. ?</logic:notMatch>?
|
檢查名為"name"的請求參數是否是"xyz"的子字符串,但是子字符串必須從"xyz"的索引位置1開始(也就是說子字符串必須是"y"或"yz"):
?<logic:match parameter="name" ?value="xyz"? location="1"> ????? The parameter name is a sub-string of the string xyz from index 1 ?</logic:match>
|
二.) 循環類型
logic:iterate
重復嵌套在此標簽體內的指定集合的元素,集合必須為如下類型:array?、Collection(包括ArrayList和Vector)、Enumeration、Iterator、Map(包括HashMap、Hashtable和TreeMap)。例如:
?<logic:iterate id="employee" name="department" property="employees" scope= "request"> … ?<bean:write name="employee" property="username" /> … ?<bean:write name="employee" property="name" /> … ?<bean:write name="employee" property="phone" /> … ?</logic:iterate>?
|
上面的代碼迭代了一個employee的集合,是department屬性employees的一個集合,作用域為request。
為了輸出第五個到第十個employee,需要使用length和offset屬性:
?<logic:iterate id="employee" name="department" property="employees" scope= "request" length="10" offset="5"> … ?<bean:write name="employee" property="username" /> … ?<bean:write name="employee" property="name" /> … ?<bean:write name="employee" property="phone" /> … ?</logic:iterate>
|
?你可以定義一個變量保存當前的索引值:??????
?<ol> ?<logic:iterate id="element" name="bean" property="stringArray" indexId="index"> ?<li> ?<em> ?<bean:write name="element"/> ?</em> ?[<bean:write name="index"/>]</li> ?</logic:iterate> ?</ol>?
|
三.) 轉發/重定向類型
logic:forward和logic:redirect
logic:forward標簽和jsp:forward標簽和相似,但它可以使用global forward中的一個ActionForward:?
?<logic:forward name="login" /> ---------------------------------------------------------------------------------------------------------------------------------- ?與上面相關的global forward中的代碼: ?<global-forwards> ?<forward name="login" path="/loginForm.jsp"/> ?</global-forwards>
|
logic:redirect標簽和上面的標簽類似,但它默認調用的方法是response.sendRedirect(),取代了上面的requestDispatcher.forward()。最大的不同是它支持所有html:link標簽的屬性,所以你能夠指
定request參數:
?<logic:redirect name="login" paramId="employeeId" paramName="employee"
|