IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Struts2标签小结

    liujiahan629629发表于 2014-09-14 22:57:28
    love 0

    前边总结Struts2的时候将标签这一部分给丢了,当时因为开发的时候很少使用,这里简单总结一下。先看一下Struts2标签的分类吧。然后分类总结一下即可。




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


    一,控制标签,JSTL大家应该都使用过,其实Struts2的控制标签和那个特别像的,主要是对EL表达式满足不了的进行补充使用。这里简单看一下吧:


    1, if……elseif……else,用来控制选择输出的标签;

    
    
    	s:if标签测试
    
    
    
    
    
    60">
    	老年人
    
    
    35">
    	中年人
    
    
    15">
    	青年人
    
    
    	少年
    
    
    


    2,append:用于将多个集合拼接成一个新的集合;

    
    
    	使用s:append标签拼接集合和Map
    
    
    
    
    	
    	
    
    
    	
    		style="background-color:#bbbbbb">
    		


    3,generator:是一个字符串解析器,用于将一个字符串解析成一个集合;

    
    
    	使用s:generator生成集合
    
    
    
    
    
    	
    		style="background-color:#bbbbbb">
    		


    4,iterator:是一个迭代器,用于将集合迭代输出,这个比较使用哈,前边都有,不再举例;

    5,merge:也是用于将多个集合拼接成一个新的集合,但是与append不同。append是将集合依次排列进行拼接,merge是第一个集合的第一个,第二个集合的第一个……第一个集合的第二个,第二个集合的第二个……;

    
    
    	使用s:merge标签迭代Map
    
    
    
    	
    	
    
    
    
    	style="background-color:#bbbbbb">
    		


    6,sort:这个标签用于将集合进行排序;

    
    
    	使用s:sort对集合元素进行排序
    
    
    
    
    
    
    输出page范围的sortedList属性:
    ${pageScope.sortedList} style="background-color:#bbbbbb">


    public class MyComparator implements Comparator
    {
    	//决定两个元素大小的方法
    	public int compare(Object element1, Object element2)
    	{
    		//根据元素字符串长度来决定大小	
    		return element1.toString().length()
    			- element2.toString().length();
    	}
    }



    7,subset:这个标签用于截取集合的部分元素,形成新的子集合。

    
    
    	使用s:subset标签截取集合元素
    
    
    
    
    
    'Java'
    	,'C#'
    	,'C++'
    	,'Ajax'
    	,'XML'
    }" decider="#mydecider"var="newList"/>直接输出page范围的newList属性:
    ${pageScope.newList}style="background-color:#bbbbbb">

    //用户自定义的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;
    	}
    }


    二,数据标签,自我感觉数据标签用的不是很多:


    action标签,可以允许在jsp页面中直接调用Action,在调用Action时候,可以指定需要被调用的Action的name和namespace.

    如果指定了executeResult参数的属性值为true,该标签会把Action的处理结果(视图资源)包含到本页面中.

    使用action标签指定属性有:

    id: 可选属性,作为该Action的引用ID

    name:必选属性,指定调用Action

    namespace:可选属性,指定该标签调用Action所属namespace

    executeResult:可选属性,指定是否将Action的处理结果包含到本页面中.默认值为false,不包含.

    "/>给action属性复制

    value=" "/>

    bean 实例化一个javabean 使用Param传入属性 (get/set)

    name 实例化的javabean的实现类

    var可选 指定则实例放入栈的上下文 允许用var直接使用

    注意:bean标签内创建javabean实例位于栈顶,bean结束移除值栈,除非指定var则通过上下文访问

    date格式化输出日期,指定日期与当天日期的时间差

    formart 指定格式格式日期 注意:不欲nice同时指定,如果同时指定。则忽略formart

    nice 是否指定日期与当前日期差值

    name必填 格式化的日期值

    var 对象放入值栈,在date结束可以通过该属性的值引用

    debug标签:

    用于辅助调试.在页面上生成超链接,可以查看值栈,和StackContext中所有信息

    id 钙元素的一个引用id

    include:讲一个jsp或者servlet包含到当前页面

    value 包含的JSP或Servlet。

    可以指定多个param子标签传参

    param标签:为其它标签提供参数

    name设置的参数的名字 (set) value设置的参数的值

    用法①

    ② 'color' "/>

    push:将某个值放到值栈的栈顶

    value必填:指定放入值栈的栈值!但是只在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指定消息文本的参数,顺序对应参数索引顺序

    name资源属性名字 id指定属性,文本内容不会输出,而是保存在值栈中,在text结束后,可以通过属性的值来引用

    public class TextTagAction extends ActionSupport{} 《topic-21》

    url标签用于创建URL地址,定义param附加请求参数

    action value 指定生成URL的Action和URL。前一个会附加.action。如果两个都没有则以当前地址为地址值

    achor 可选 指定url的锚点

    encode 可选 对指定参数进行编码 不支持cookie改写url支持session

    escapeamp 是否将&转义为&

    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里边的各种标签,这里不再进行赘述,用的时候我们上网上查即可,这里提供网上的一些,大家可以看下:

    Struts2常用表单标签

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

    标签名

    含义

    actionerror

    如果Action实例的getActionErrors()方法返回不为null,则该标签负责输出该方法的返回的信息。

    actionmessage

    和上边一样,用于返回GetActionMessage()的信息

    component

    用于生成一个自定义组件。可以利用写好模版,主题等

    fielderror

    如果Action实例存在表单域的类型转换错误,校验错误,该标签负责输出这些错误信息。


    简单看一个componet标签:


    
    
    	使用s:component标签
    
    
    

    使用s:component标签

    使用默认主题(xhtml),默认主题目录(template)
    使用mytemplate.jsp作为视图组件
    使用自定义主题,自定义主题目录
    使用myAnotherTemplate.jsp作为视图组件

    这是Struts2标签的简单总结,我们可以在使用中不断熟练,但是前提我们得知道这些东西。即所谓的那句话,不怕不知道,就怕不知道。




沪ICP备19023445号-2号
友情链接