struts系列學習(logic標籤庫)

 

Logic 標籤庫

        此標籤庫可以分爲三種類型:條件、循環、轉發/重定向。

一.) 條件類型

  1. 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。
  2. 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> 

  3. 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屬性。
  4. 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>&nbsp;
 [<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" property="id" />

提示:1.) 在MVC框架下,不推薦使用這兩個標籤,你應該是從controller中選擇下一個view,而不是從view中選擇。
           2.) 在Jsp頁面中不要過多的使用logic標籤。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章