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标签的简单总结,咱们能够在使用中不断熟练,可是前提咱们得知道这些东西。即所谓的那句话,不怕不知道,就怕不知道。

相关文章
相关标签/搜索