struts2标签总结_动力节点Java学院整理
先看一下Struts2标签的分类吧。然后分类总结一下即可。 由于控制标签用的比较多,所以放在了前边。好首先看一下控制标签吧。 一、控制标签,JSTL大家应该都使用过,其实Struts2的控制标签和那个特别像的,主要是对EL表达式满足不了的进行补充使用。这里简单看一下吧: 1. if……elseif……else,用来控制选择输出的标签; <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>s:if标签测试</title> </head> <body> <!-- 在Stack Context中定义一个age属性,其值为29 --> <s:set name="age" value="29"/> <!-- 如果Stack Context中的age属性大于60 --> <s:if test="#age>60"> 老年人 </s:if> <!-- 如果Stack Context中的age属性大于35 --> <s:elseif test="#age>35"> 中年人 </s:elseif> <!-- 如果Stack Context中的age属性大于15 --> <s:elseif test="#age>15"> 青年人 </s:elseif> <s:else> 少年 </s:else> </body> </html> </span> 2.append:用于将多个集合拼接成一个新的集合; <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用s:append标签拼接集合和Map</title> </head> <body> <!-- 使用append将List和Map集合拼接在一起 新集合实际上是Map集合,其名字为newList --> <s:append var="newList"> <s:param value="#{'Java':'ljh','C#':'lsz'}" /> <s:param value="#{'0629','0404'}" /> </s:append> <table border="1" width="280"> <!-- 使用iterator迭代newList集合 --> <s:iterator value="#newList" status="st"> <tr <s:if test="#st.odd"> style="background-color:#bbbbbb"</s:if>> <td><s:property value="key"/></td> <td><s:property value="value"/></td> </tr> </s:iterator> </table> </body> </html> </span> 3.generator:是一个字符串解析器,用于将一个字符串解析成一个集合; <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用s:generator生成集合</title> </head> <body> <table border="1" width="240"> <!-- 使用generator标签将指定字符串解析成Iterator集合 在generator标签内,得到的List集合位于ValueStack顶端 --> <s:generator val="'Java,C#,C++'" separator=","> <!-- 没有指定迭代哪个集合,直接迭代ValueStack顶端的集合 --> <s:iterator status="st"> <tr <s:if test="#st.odd"> style="background-color:#bbbbbb"</s:if>> <td><s:property/></td> </tr> </s:iterator> </s:generator> </table> </body> </html></span> 4.iterator:是一个迭代器,用于将集合迭代输出,这个比较使用哈,前边都有,不再举例; 5.merge:也是用于将多个集合拼接成一个新的集合,但是与append不同。append是将集合依次排列进行拼接,merge是第一个集合的第一个,第二个集合的第一个……第一个集合的第二个,第二个集合的第二个……; <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用s:merge标签迭代Map</title> </head> <body> <s:merge id="newList"> <s:param value="#{'Java':'ljh','0404'}" /> </s:merge> <table border="1" width="320"> <s:iterator value="#newList" status="st"> <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>> <td><s:property value="key"/></td> <td><s:property value="value"/></td> </tr> </s:iterator> </table> </body> </html></span> 6.sort:这个标签用于将集合进行排序; <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用s:sort对集合元素进行排序</title> </head> <body> <!-- 定义一个Comparator实例 --> <s:bean var="mycomparator" name="org.ljh.app.util.MyComparator"/> <!-- 使用自定义的排序规则对目标集合进行排序 --> <s:sort source="{'Java','C#','C++','Ajax','XML'}" comparator="#mycomparator" var="sortedList"/> 输出page范围的sortedList属性:<br/> ${pageScope.sortedList} <table border="1" width="300"> <!-- 迭代page范围内的sortedList属性 --> <s:iterator status="st" value="#attr.sortedList"> <tr <s:if test="#st.odd"> style="background-color:#bbbbbb"</s:if>> <td><s:property/></td> </tr> </s:iterator> </table> </body> </html></span> <span style="font-size:18px;">public class MyComparator implements Comparator { //决定两个元素大小的方法 public int compare(Object element1,Object element2) { //根据元素字符串长度来决定大小 return element1.toString().length() - element2.toString().length(); } }</span> 7.subset:这个标签用于截取集合的部分元素,形成新的子集合。 <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>使用s:subset标签截取集合元素</title> </head> <body> <!-- 定义一个Decider Bean --> <s:bean var="mydecider" name="org.ljh.app.util.MyDecider"/> <!-- 使用自定义的Decider实例来截取目标集合,生成子集 指定var属性,将生成的Itertor放入pageScope中 --> <s:subset source="{<span style="font-family: SimSun; ">'Java'</span></span><pre name="code" class="html"><span style="font-size:18px;">,'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> <span style="font-size:18px;">//用户自定义的Decider类,实现了SubsetIteratorFilter.Decider接口 public class MyDecider implements SubsetIteratorFilter.Decider { //实现Decider接口必须实现的decide方法, //该方法决定集合中的元素是否被选入子集 public boolean decide(Object element) throws Exception { String str = (String)element; //如果集合元素(字符串)中包含Java EE子串,即可被选入子集 return str.indexOf("Java") > 0; } }</span> 二、数据标签,自我感觉数据标签用的不是很多: action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace. id: 可选属性,作为该Action的引用ID <s:actionname="actionTag!default" executeResult="true"namespace="/generic/dataTag"> <paramname="username" value=" "/>给action属性复制 <paramname="email" value=" "/> </s:action> bean 实例化一个javabean 使用Param传入属性 (get/set) date格式化输出日期,指定日期与当天日期的时间差 <constanname="sruts.custom.i18n.resources"value="ApplicationResources" /> debug标签: 用于辅助调试.在页面上生成超链接,可以查看值栈,和StackContext中所有信息 include:讲一个jsp或者servlet包含到当前页面 param标签:为其它标签提供参数 ①<paramname="color"> push:将某个值放到值栈的栈顶 用法: <s:pushvalue="#session.user"> <s:propertyvalue="username"> <s:propertyvalue="sex"> <s:propertyvalue="emai"> </s:push> set:用于将某个只放入指定范围内 i18n text标签 支持国际化信息 public class TextTagAction extends ActionSupport{} 《topic-21》 url标签用于创建URL地址,定义param附加请求参数 property标签,用于输出值栈中的对象的属性值 三、表单标签,这个就是form下的Struts2提供的标签,供界面显示用的,其实用的更少,一般情况下,我们都会拿easy-ui,dwz等一些专门做界面的框架进行替换。其实说简单一点就像HTML里边的各种标签,这里不再进行赘述 四、非标单标签,主要用于生成一些非表单的可视化元素,例如tab页面,输出HTML页面的树形结构等,当然也用来显示Action里封装的信息。简单介绍一下: 简单看一个componet标签: <span style="font-size:18px;"><html> <head> <title>使用s:component标签</title> </head> <body> <h3>使用s:component标签</h3> 使用默认主题(xhtml),默认主题目录(template)<br/> 使用mytemplate.jsp作为视图组件 <s:component template="mytemplate.jsp"> <s:param name="list" value="{'Java',C++'}"/> </s:component> <hr/> 使用自定义主题,自定义主题目录<br/> 使用myAnotherTemplate.jsp作为视图组件 <s:component templateDir="myTemplateDir" theme="myTheme" template="myAnotherTemplate.jsp"> <s:param name="list" value=" {'Java',C++'}"/> </s:component> </body> </html> </span> 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |