欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

struts2标签总结_动力节点Java学院整理

程序员文章站 2024-02-25 23:35:27
先看一下struts2标签的分类吧。然后分类总结一下即可。 由于控制标签用的比较多,所以放在了前边。好首先看一下控制标签吧。 一、控制标签,jstl大家应该都使用过...

先看一下struts2标签的分类吧。然后分类总结一下即可。

struts2标签总结_动力节点Java学院整理

由于控制标签用的比较多,所以放在了前边。好首先看一下控制标签吧。

一、控制标签,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', 
    'c#':'lsz'}" /> 
  <s:param value="#{'0629',  
    '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;"> ,'c#' 
  ,'c++' 
  ,'ajax' 
  ,'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.
如果指定了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  包含的jsp或servlet。
可以指定多个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  指定生成url的action和url。前一个会附加.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  可选   value为null输出改值
escape 是否专一输出内容中的html 

三、表单标签,这个就是form下的struts2提供的标签,供界面显示用的,其实用的更少,一般情况下,我们都会拿easy-ui,dwz等一些专门做界面的框架进行替换。其实说简单一点就像html里边的各种标签,这里不再进行赘述

四、非标单标签,主要用于生成一些非表单的可视化元素,例如tab页面,输出html页面的树形结构等,当然也用来显示action里封装的信息。简单介绍一下:

struts2标签总结_动力节点Java学院整理

简单看一个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#' 
  ,c++'}"/> 
</s:component> 
<hr/> 
使用自定义主题,自定义主题目录<br/>  
使用myanothertemplate.jsp作为视图组件 
<s:component 
  templatedir="mytemplatedir" 
  theme="mytheme" 
  template="myanothertemplate.jsp"> 
  <s:param name="list" value=" 
  {'java' 
  ,'c#' 
  ,c++'}"/> 
</s:component> 
</body> 
</html> 
</span> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。