Strust2標籤(轉)

 

 


 

 

        因爲控制標籤用的比較多,因此放在了前邊。好首先看一下控制標籤吧。html

 

        一,控制標籤,JSTL你們應該都使用過,其實Struts2的控制標籤和那個特別像的,主要是對EL表達式知足不了的進行補充使用。這裏簡單看一下吧:java

 

      1 if……elseif……else,用來控制選擇輸出的標籤;cookie

 

[html]  view plain  copy
 
 print?
  1. <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <title>s:if標籤測試</title>  
  4. </head>  
  5. <body>  
  6. <!-- 在Stack Context中定義一個age屬性,其值爲29 -->  
  7. <s:set name="age" value="29"/>  
  8. <!-- 若是Stack Context中的age屬性大於60 -->  
  9. <s:if test="#age>60">  
  10.     老年人  
  11. </s:if>  
  12. <!-- 若是Stack Context中的age屬性大於35 -->  
  13. <s:elseif test="#age>35">  
  14.     中年人  
  15. </s:elseif>  
  16. <!-- 若是Stack Context中的age屬性大於15 -->  
  17. <s:elseif test="#age>15">  
  18.     青年人  
  19. </s:elseif>  
  20. <s:else>  
  21.     少年  
  22. </s:else>  
  23. </body>  
  24. </html></span>  



 

        2append:用於將多個集合拼接成一個新的集合;session

 

[html]  view plain  copy
 
 print?
  1. <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <title>使用s:append標籤拼接集合和Map</title>  
  4. </head>  
  5. <body>  
  6. <!-- 使用append將List和Map集合拼接在一塊兒  
  7.     新集合其實是Map集合,其名字爲newList -->  
  8. <s:append var="newList">  
  9.     <s:param value="#{'Java':'ljh',  
  10.         'C#':'lsz'}" />  
  11.     <s:param value="#{'0629',   
  12.         '0404'}" />  
  13. </s:append>  
  14. <table border="1" width="280">  
  15. <!-- 使用iterator迭代newList集合 -->  
  16. <s:iterator value="#newList" status="st">  
  17.     <tr <s:if test="#st.odd">  
  18.         style="background-color:#bbbbbb"</s:if>>  
  19.         <td><s:property value="key"/></td>  
  20.         <td><s:property value="value"/></td>  
  21.     </tr>  
  22. </s:iterator>  
  23. </table>  
  24. </body>  
  25. </html>  
  26. </span>  



 

        3generator:是一個字符串解析器,用於將一個字符串解析成一個集合;app

 

[html]  view plain  copy
 
 print?
  1. <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <title>使用s:generator生成集合</title>  
  4. </head>  
  5. <body>  
  6. <table border="1" width="240">  
  7. <!-- 使用generator標籤將指定字符串解析成Iterator集合  
  8.     在generator標籤內,獲得的List集合位於ValueStack頂端 -->  
  9. <s:generator val="'Java  
  10.     ,C#,  
  11.     C++'" separator=",">  
  12. <!-- 沒有指定迭代哪一個集合,直接迭代ValueStack頂端的集合 -->  
  13. <s:iterator status="st">  
  14.     <tr <s:if test="#st.odd">  
  15.         style="background-color:#bbbbbb"</s:if>>  
  16.         <td><s:property/></td>  
  17.     </tr>  
  18. </s:iterator>  
  19. </s:generator>  
  20. </table>  
  21. </body>  
  22. </html></span>  



 

        4iterator:是一個迭代器,用於將集合迭代輸出,這個比較使用哈,前邊都有,再也不舉例;框架

     

        5merge:也是用於將多個集合拼接成一個新的集合,可是與append不一樣。append是將集合依次排列進行拼接,merge是第一個集合的第一個,第二個集合的第一個……第一個集合的第二個,第二個集合的第二個……;jsp

 

[html]  view plain  copy
 
 print?
  1. <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <title>使用s:merge標籤迭代Map</title>  
  4. </head>  
  5. <body>  
  6. <s:merge id="newList">  
  7.     <s:param value="#{'Java':'ljh',  
  8.         'C#':'lsz'}" />  
  9.     <s:param value="#{'0629',   
  10.         '0404'}" />  
  11. </s:merge>  
  12.   
  13. <table border="1" width="320">  
  14. <s:iterator value="#newList" status="st">  
  15.     <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>  
  16.         <td><s:property value="key"/></td>  
  17.         <td><s:property value="value"/></td>  
  18.     </tr>  
  19. </s:iterator>  
  20. </table>  
  21. </body>  
  22. </html></span>  



 

       6sort:這個標籤用於將集合進行排序;ide

 

[html]  view plain  copy
 
 print?
  1. <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <title>使用s:sort對集合元素進行排序</title>  
  4. </head>  
  5. <body>  
  6. <!-- 定義一個Comparator實例 -->  
  7. <s:bean var="mycomparator" name="org.ljh.app.util.MyComparator"/>  
  8. <!-- 使用自定義的排序規則對目標集合進行排序 -->  
  9. <s:sort source="{'Java'  
  10.     ,'C#'  
  11.     ,'C++'  
  12.     ,'Ajax'  
  13.     ,'XML'}"   
  14.     comparator="#mycomparator"  
  15.     var="sortedList"/>  
  16. 輸出page範圍的sortedList屬性:<br/>  
  17. ${pageScope.sortedList}  
  18. <table border="1" width="300">  
  19. <!-- 迭代page範圍內的sortedList屬性 -->  
  20. <s:iterator status="st" value="#attr.sortedList">   
  21.     <tr <s:if test="#st.odd">  
  22.         style="background-color:#bbbbbb"</s:if>>  
  23.         <td><s:property/></td>  
  24.     </tr>  
  25. </s:iterator>  
  26. </table>  
  27. </body>  
  28. </html></span>  

 

 

[java]  view plain  copy
 
 print?
  1. <span style="font-size:18px;">public class MyComparator implements Comparator  
  2. {  
  3.     //決定兩個元素大小的方法  
  4.     public int compare(Object element1, Object element2)  
  5.     {  
  6.         //根據元素字符串長度來決定大小      
  7.         return element1.toString().length()  
  8.             - element2.toString().length();  
  9.     }  
  10. }</span>  




       7subset:這個標籤用於截取集合的部分元素,造成新的子集合。測試

 

[html]  view plain  copy
 
 print?
  1. <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">  
  2. <head>  
  3.     <title>使用s:subset標籤截取集合元素</title>  
  4. </head>  
  5. <body>  
  6. <!-- 定義一個Decider Bean -->  
  7. <s:bean var="mydecider" name="org.ljh.app.util.MyDecider"/>  
  8. <!-- 使用自定義的Decider實例來截取目標集合,生成子集  
  9.     指定var屬性,將生成的Itertor放入pageScope中 -->  
  10. <s:subset source="{<span style="font-family: SimSun; ">'Java'</span></span><pre name="code" class="html"><span style="font-size:18px;">  ,'C#'  
  11.     ,'C++'  
  12.     ,'Ajax'  
  13.     ,'XML'</span></pre><span style="font-size:18px;">}" decider="#mydecider"var="newList"/>直接輸出page範圍的newList屬性:<br/>${pageScope.newList}<table border="1" width="240"><!-- 迭代page範圍內的newList屬性 --><s:iterator status="st" value="#attr.newList"><tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>><td><s:property/></td></tr></s:iterator></table></body></html></span>  

 

[java]  view plain  copy
 
 print?
  1. <span style="font-size:18px;">//用戶自定義的Decider類,實現了SubsetIteratorFilter.Decider接口  
  2. public class MyDecider   
  3.     implements SubsetIteratorFilter.Decider  
  4. {  
  5.     //實現Decider接口必須實現的decide方法,  
  6.     //該方法決定集合中的元素是否被選入子集  
  7.     public boolean decide(Object element) throws Exception  
  8.     {  
  9.         String str = (String)element;  
  10.         //若是集合元素(字符串)中包含Java EE子串,便可被選入子集  
  11.         return str.indexOf("Java") > 0;  
  12.     }  
  13. }</span>  



 

 

         二,數據標籤,自我感受數據標籤用的不是不少:ui

 

        action標籤,能夠容許在jsp頁面中直接調用Action,在調用Action時候,能夠指定須要被調用的Action的name和namespace.

若是指定了executeResult參數的屬性值爲true,該標籤會把Action的處理結果(視圖資源)包含到本頁面中. 

使用action標籤指定屬性有:

     id: 可選屬性,做爲該Action的引用ID 

     name:必選屬性,指定調用Action 

     namespace:可選屬性,指定該標籤調用Action所屬namespace 

     executeResult:可選屬性,指定是否將Action的處理結果包含到本頁面中.默認值爲false,不包含.

 

<s:actionname="actionTag!default" executeResult="true"namespace="/generic/dataTag">

<paramname="username" value="  "/>action屬性複製

<paramname="email"        value="  "/>

</s:action>

 

 

          bean 實例化一個javabean 使用Param傳入屬性 (get/set)

name 實例化的javabean的實現類

var可選  指定則實例放入棧的上下文 容許用var直接使用

注意:bean標籤內建立javabean實例位於棧頂,bean結束移除值棧,除非指定var則經過上下文訪問

 

          date格式化輸出日期,指定日期與當天日期的時間差

formart   指定格式格式日期       注意:不欲nice同時指定,若是同時指定。則忽略formart

nice  是否指定日期與當前日期差值

name必填  格式化的日期值

var  對象放入值棧,在date結束能夠經過該屬性的值引用

 

<constanname="sruts.custom.i18n.resources"value="ApplicationResources" />

<s:datename="#date" formart="yyyy年MM月dd日"/>

 

        debug標籤:

用於輔助調試.在頁面上生成超連接,能夠查看值棧,和StackContext中全部信息

id 鈣元素的一個引用id

 

        include:講一個jsp或者servlet包含到當前頁面

value  包含的JSPServlet

能夠指定多個param子標籤傳參

 

        param標籤:爲其它標籤提供參數

name設置的參數的名字 (set)  value設置的參數的值

用法①<paramname="color">  

②<paramname="color" value="   'color'   "/>

 

         push:將某個值放到值棧的棧頂

value必填:指定放入值棧的棧值!可是隻在push標籤內,一旦超出,剛剛放入的對象當即被移除

用法:

<s:pushvalue="#session.user">

<s:propertyvalue="username">

<s:propertyvalue="sex">

<s:propertyvalue="emai">

</s:push>

 

        set:用於將某個只放入指定範圍內

定義一個新變量。將已有值放入新變量。並放入指定範圍

value  指定一個表達式,計算的結果賦變量,若是沒有指定value屬性,默認將棧頂對象賦給變量。

var  指定該屬性,改值放入到值棧中

scope指定新變量防止的範圍,可選application,session request page action(默認)  若是指定爲action放入request並放入action值棧

name變量名字

 

       i18n  text標籤  支持國際化信息

i18n將資源包放入值棧   name資源屬性名字   指定資源包的基名

text從資源包中獲取信息 title   獲取鍵爲title的消息

經過i18n放入的資源包只能在標籤體內訪問

text能夠單獨使用。首先查找資源包的基名與調用action類名相同的資源包,意味着,能夠在action類所在的包中建立與Action類名相同的的資源文件,能夠嵌套param指定消息文本的參數,順序對應參數索引順序

<s:i18nname="AppliactionResources">

<s:textname="title"/>    name資源屬性名字   id指定屬性,文本內容不會輸出,而是保存在值棧中,在text結束後,能夠經過屬性的值來引用

</s:i18n>

 

public class TextTagAction  extends ActionSupport{}   topic-21

 

 

        url標籤用於建立URL地址,定義param附加請求參數

action value  指定生成URLActionURL。前一個會附加.action。若是兩個都沒有則以當前地址爲地址值

 achor 可選  指定url的錨點

encode 可選   對指定參數進行編碼 不支持cookie改寫url支持session

escapeamp  是否將&轉義爲&amp

var  將連接值放入到值棧

includeContext是否將當前上下文包含在URL地址

includeParams是否包含請求參數,改屬性值只能爲none,getall

method 指定使用action的方法

namespace指定action所屬的命名空間

portletmode指定portle模式

scheme指定url使用的協議

 

        property標籤,用於輸出值棧中的對象的屬性值

value指定要輸出的對象屬性  沒有則輸出棧頂

default  可選   valuenull輸出改值

escape 是否專注輸出內容中的html

 

 

    三,表單標籤,這個就是form下的Struts2提供的標籤,供界面顯示用的,其實用的更少,通常狀況下,咱們都會拿easy-ui,dwz等一些專門作界面的框架進行替換。其實說簡單一點就像HTML裏邊的各類標籤,這裏再也不進行贅述,用的時候咱們上網上查便可,這裏提供網上的一些,你們能夠看下:

Struts2經常使用表單標籤

 

 

    四,非標單標籤,主要用於生成一些非表單的可視化元素,例如tab頁面,輸出HTML頁面的樹形結構等,固然也用來顯示Action裏封裝的信息。簡單介紹一下:

標籤名

含義

actionerror

若是Action實例的getActionErrors()方法返回不爲null,則該標籤負責輸出該方法的返回的信息。

actionmessage

和上邊同樣,用於返回GetActionMessage()的信息

component

用於生成一個自定義組件。能夠利用寫好模版,主題等

fielderror

若是Action實例存在表單域的類型轉換錯誤,校驗錯誤,該標籤負責輸出這些錯誤信息。

 

    簡單看一個componet標籤:

 

 

[html]  view plain  copy
 
 print?
  1. <span style="font-size:18px;"><html>  
  2. <head>  
  3.     <title>使用s:component標籤</title>  
  4. </head>  
  5. <body>  
  6. <h3>使用s:component標籤</h3>  
  7. 使用默認主題(xhtml),默認主題目錄(template)<br/>    
  8. 使用mytemplate.jsp做爲視圖組件  
  9. <s:component template="mytemplate.jsp">  
  10.     <s:param name="list" value="{'Java'  
  11.     ,'C#'  
  12.     ,C++'}"/>  
  13. </s:component>  
  14. <hr/>  
  15. 使用自定義主題,自定義主題目錄<br/>    
  16. 使用myAnotherTemplate.jsp做爲視圖組件  
  17. <s:component  
  18.     templateDir="myTemplateDir"  
  19.     theme="myTheme"  
  20.     template="myAnotherTemplate.jsp">  
  21.     <s:param name="list" value="  
  22.     {'Java'  
  23.     ,'C#'  
  24.     ,C++'}"/>  
  25. </s:component>  
  26. </body>  
  27. </html>  
  28. </span>  

 

 

    這是Struts2標籤的簡單總結,咱們能夠在使用中不斷熟練,可是前提咱們得知道這些東西。即所謂的那句話,不怕不知道,就怕不知道。

相關文章
相關標籤/搜索