Struts2知识点小结1-Struts Tag Library

于一个MVC框架而言,重点是实现二个部分: 控制器部分和视图部分。 Struts2框架同如此:控制器部分由
Action(
以及藏的系列截器)来提供支持,而视图部分大量标签来提供支持。

Struts2标签库使用OGNL表达式作 且默支持OGNL, JSTL, GroovyVelcity表达式。且把所有标签
URI /struts-tags 命名空下,但我依然可以依据功能将其分

1. UI标签;
   a.
单标签

   b.
非表单标签Tab等;

2. UI标签
   a.
流程控制: 条件、循
   b.
数据访问 ValueStack中的

3. AJAX标签;


Object Graph Navigation Language,
OGNL,是似于EL的脚本言,


. 控制标签

    Struts2中的非UI标签包括控制标签和数据标签,其中控制标签可以完成出流程控制,例如条件、循等操作,
   
也可完成集合的合并、排序等操作,它有如下九个:

    1) if: 选择输出;
    2) elseIf/elseif:
if标签结合使用;
    3) else:
if标签结合使用
    4) append:
将多个集合拼接成一个新的集合;
    5) generator:
将一个字符串解析成一个集合;
    6) iterator:
将集合迭代出;
    7) merge:
将多个集合拼接成一个新集合,与append拼接方式不同;
    8) sort:
集合行排序;
    9) subset:
截取集合部分元素,形成新的子集;

    1. iterator标签

       集合行迭代,包括List,Set和数Map.

       . value: ,被迭代的集合,通常使用OGNL表达式指定,如无,使用ValueStack栈顶集合;
       . id:
,指向集合中元素;
       . status:
,指向迭代IteratorStatus例,通过该实例可判断当前迭代元素的属性;次迭代都有
                
一个IteratorStatus例,该实例包含以下方法:

         a. int getCount(): 返回当前迭代了几个元素
         b. int getIndex():
返回当前迭代元素的索引
         c. boolean isEven():
当前索引是否偶数
         d. boolean isFirst():
当前迭代元素是否是第一个元素
         e. boolean isLast():
当前迭代元素是否是最后一个元素
         f. boolean isOdd():
当前索引是否奇数

    2. if标签

       根据一个Boolean表达式的,来决定是否算,标签体等内容。
      
    3. append
标签

       将多个集合象拼接起来,成一个新的集合。
      
其中 id 属性确定拼接生成的新集合的名字。 append可接受多个<s:param ..../>标签个子标签指定一个集合,
append
      
<s:param..../>指定的多个集合拼接成一个集合;

    4. generator标签

       将指定字符串按指定分隔符分隔成多个子串,临时生成的多个子串可以使用iterator标签来迭代出。

       a. count: 指定生成集合中元素数;
       b. separator:
指定解析字符串的分隔符;
       c. val:
指定被解析的字符串;
       d. converter:
,指定一个负责将集合中个字符串转换象;
       e. id:
指定访问集合的名称,如指定,集合放在pageContext属性中;

    5. merage标签

       功能和append似,但是新集合中各元素序不同:

       append
       1)
第一个集合第一个元素;
       2)
第一个集合第二个元素;
       3)
第一个集合第三个元素;
       4)
第二个集合第一个元素;
       5)
第二个集合第二个元素;
       6)
第二个集合第三个元素;
       7)
第三个集合第一个元素;
       8)
第三个集合第二个元素;
       9)
第三个集合第三个元素;

       merage
       1)
第一个集合第一个元素;
       2)
第二个集合第一个元素;
       3)
第三个集合第一个元素;
       4)
第一个集合第二个元素;
       5)
第二个集合第二个元素;
       6)
第三个集合第二个元素;
       7)
第一个集合第三个元素;
       8)
第二个集合第三个元素;
       9)
第三个集合第三个元素;

    6. subset标签

       取得集合的子集:
       . count:
指定子集合元素个数;
       . source:
指定源集合,如不指定,取得ValueStack栈顶的集合;
       . start:
指定从源集合中第几个元素始截取,默契第一个(值为0);
       . decider:
指定由开发者是否元素;

    7. sort标签      

       于指定的集合行排序; 提供自己的排序规则,即提供实现 java.util.Comparator接口的实现类
       . comparator:
指定行排序的 Comparator 例;
       . source:
指定被排序的集合,如不指定,则针对 ValueStack栈顶的集合;


. 数据标签

    提供各数据访问的功能,包含示一个Action中属性以及生成国出等功能;

    1. property标签

       提供一快速、方便地方式从ValueStackActionContext示;

       . value: 指定出的属性,如没有指定,认输ValueStack栈顶;
       . default:
出属性值为 null, 则显 default 属性的

       . escape:
是否escape HTML , 认值为 true; < &lt;

    2. set 标签

       将一个已有的值复量,然后放到指定的范

       . name: 必填,新量名字
       . scope:
属性,指定新量放置的范,可以接受 application, session, request, page action 五个
              
认为 Action;
       . value:
赋给变量的,没指定,则为ValueStack栈顶

       . id:
元素的引用ID
      
    3. push
标签

       将某个放到valueStack中,从而更加方便访问

    4. bean 标签

       JavaBean例;

       . name: ,要例化的JavaBean的完整名;
       . var: 
,可通过该属性标签访问例化的JavaBean;

    5. Date 标签
      
      
格式化出日期以及算指定日期和当前差;

       . format: ,指定日期示格式;
       . nice:
, 是否出指定日期和当前差,默认值为 false;
       . name:
必填,日期
;
       . id:
,引用元素的 id

       如果既指定nice="true", 又指定 format 属性,出指定日期和当前差,即format属性失效;
      
如没有指定format属性,也没指定nice="true", 会到源文件中 key struts.date.format的消息作格式,否
      
采用默 DateFormat.MEDIUM格式出。

    6. action 标签     

       直接在JSP面中直接Action

       . id: Action的引用ID;
       . name:
用哪个
Action;
       . namespace:
Action所属的
namespace;
       . executeResult:
,是否将Action面包含到本面,默认值为
false;
       . ignoreContextParams:
该页面中求参数是否需用的Action, 认值为 false, 入。

    7. debug 标签

       用于调试,它在面上生成一个超级链接,通过该链接可以看到ValueStackStack Context中所有的信息;

    8. include 标签

       将一个JSPservlet包含到本面中:
       . value
必填, 指定包含的源;
       . id:
该标签ID引用;

    9. url 标签       
 
      
生成一个URL 地址,可以通过为url标签指定 param 子元素,从而向指定URL求参数。

       . includeParams: ,是否包含求参数,值为 none, get或者all.
       . scheme:
schema属性;

       . value:
,指定生成的URL,如果无valueaction就使用action指定ActionURL地址;
               
如果均提供,使用value指定URL;如均不提供,使用当前面作URL地址;
       . action:
,指定action;
       . namespace:
,指定命名空

       . method:
,指定使用Action的方法;
       . encode:
,是否需encode求参数;
       . includeContext:
是否需将当前上下文包含在URL地址中;
       . anchor:
,指定URL点;
       . id:
指定URL元素的引用ID

    10. i18ntext 标签 

        i18n用于示指定指定源文件;

        . name: 源文件名称;
 
        text
用于取指定源文件中指定key对应

        . name: 源文件 key
        . id: 
引用的标识;


. Form标签

    1. checkbox 标签    
 
        <s:set name="aBoolean" value="false"/><br>
        <s:checkbox label="checkbox test" name="checkboxField1" value="#aBoolean" fieldValue="true"/>
        <s:set name="aBoolean" value="true"/><br>
        <s:checkbox label="checkbox test" name="checkboxField1" value="#aBoolean" fieldValue="true"/>

       果:

    <input type="checkbox" name="checkboxField1" value="true" id="checkboxField1"/>
    <input type="checkbox" name="checkboxField1" value="true" checked="checked" id="checkboxField1"/>

    2. checkboxlist 标签  

       一次性建多个复选框,它根据list属性指定的集合来生成多个复选框;

       . listKey: 指定集合元素中的某个属性作为复选框的 value;
       . listValue:
指定集合元素中的某个属性作为复选框的 标签;

    3. combobox 标签 

       生成一个行文本框和下拉列表框的合,但两个表元素只对应一个求参数,只有行文本框里的才包含
      
求参数,而下拉列表框只是用于入,没name属性。

    4. doubleselect 标签 

       生成一个级联列表框, 选择第一个下拉列表框,第二个下拉列表框的内容会随之改

       . list: 第一个下拉列表框的集合;
       . listKey:
指定集合元素中某个属性作第一个下拉列表框的value;
       . listValue:
指定集合元素中某个属性作第一个下拉列表框的标签
;
       . doubleList:
第二个下拉列表框的集合;

       . doublelistKey:
指定集合元素中某个属性作第二个下拉列表框的value;
       . doublelistValue:
指定集合元素中某个属性作第二个下拉列表框的标签
;
       . doublename:
第二个下拉列表框的 name 属性;

       doubleselect标签一定得位于form中,且form指定action属性

. 数据传输以及转换

    1. 要数据传输以及数据转换?

       所有的MVC框架,都需要负责收集用户请求参数,并将求参数传给应用的控制器件。但所有的求参数都是,
      
也只能是字符串数据型,但Java数据言,因此MVC框架必些字符串求参数转换成相的数据
      
型,个工作是所有MVC框架均提供的功能。

       于此,在束,在格式化果的侯,我也需将封装了果数据的JavaBean属性
      
转换为HTML面上示的内容。

       数据的传输转换贯穿于理的整个生命周期。

       Struts2内置的截器提供了非常大的转换机制,也提供了很好的展性,开发者可以非常简单开发
      
自己的转换器,完成字符串和自定义复型的转换(例如将字符串到Student间转换). 如果转换
      
异常,开发者也无须关心异常逻辑Struts2conversionError截器提供了非常大的表现层数据
      
机制, 并且在面上示异常信息。, Struts2转换器提供了非常大的表现层处理机制,方便了开发
      
的使用和操作。

    2. OGNLStruts2

       Struts2转换是基于OGNL表达式的,只要我HTML命名合法的OGNL表达式,就可以充分利用Struts2
      
转换机制。

    3. 内置的转换

       Struts2内建了字符串型和如下转换.

       . Date: 日期格式使用用户请求所在LocaleSHORT格式;
       .
:默情况下,元素是字符串;
       .
集合:在默情况下,集合元素型是String;

    4. List中放置自定

       1) 提交

            <s:textfield name="users[0].name" label="User Name"/>
            <s:textfield name="users[1].name" label="User Name"/>
            <s:textfield name="users[2].name" label="User Name"/>
            <s:textfield name="users[0].age" label="User Age"/>
            <s:textfield name="users[1].age" label="User Age"/>
            <s:textfield name="users[2].age" label="User Age"/>                       

       2) Action

      public class ListConversion {
              private List<Student> users;
              ...;
          }

          其国com.briup.Student类为:

          public class Student {
         private String name;
             private int age;   
          }
           
         
如果ActionList不使用范型,必Action同目下新增一文件, 使名规则为

          Action-conversion.properties, 例如,可命名 ListConversion-conversion.properties

          内容

          Element_list型属性名称=list中所包含象完整

          例如,Element_users=com.briup.Student

       3)

        User Name Number 3: <s:property value="users[2].name"/><br>
        User Age Number 2: <s:property value="users[1].age"/><br>
   
    5. Map
中放置自定

       1) 提交

            <s:textfield name="students['one'].name" label="Name"/>
            <s:textfield name="students['two'].name" label="Name"/>
            <s:textfield name="students['three'].name" label="Name"/>
            <s:textfield name="students['one'].age" label="Age"/>
            <s:textfield name="students['two'].age" label="Age"/>
            <s:textfield name="students['three'].age" label="Age"/>                       

       2) Action

      public class MapConversion {
              private Map<Student> students;
              ...;
          }

          其国com.briup.Student类为:

          public class Student {
         private String name;
             private int age;   
          }
           
         
如果ActionMap不使用范型,必Action同目下新增一文件, 使名规则为

          Action-conversion.properties, 例如,可命名 MapConversion-conversion.properties

          内容

          Element_map型属性名称=mapvalue象完整
          Key_map
型属性名称=mapkey象完整      

          例如,Element_students=com.briup.Student
                Key_students=java.lang.String

       3)

        Age Number One: <s:property value="students['one'].age"/><br>
        Name Number Two: <s:property value="students['two'].name"/><br>


    6.
自定义类转换:
 
      
注:JSP面控件名和Action中属性同名

       1) 转换实现类实现接口 org.apache.struts2.util.StrutsTypeConverter实现二个方法:

          //求字符转换成特定
    public Object convertFromString(Map context, String[] values, Class toClass) {
        System.out.println("----------From String-------------");
        for(Object key: context.keySet()) {
            System.out.printf("Key: %s/tValue: %s%n",
                    key,
                    context.get(key));
        }
        System.out.println("toClass: "+toClass);
       
        String userString = values[0];
        Circle newCircle = parseCircle(userString);
        return newCircle;
    }

          //转换成字符串
    public String convertToString(Map context, Object o) {
        System.out.println("----------From String-------------");
        for(Object key: context.keySet()) {
            System.out.printf("Key: %s/tValue: %s%n",
                    key,
                    context.get(key));
        }       
        Circle circle = (Circle) o;
        String userString = "toString: C:r" + circle.getRadius();
        return userString;
    }

       2) 置配置文件:

          局部转换: Action所在目下配置文件:

                      Action-conversion.properties 例如 CircleAction-conversion.properties,

                      内容

                      象属性名称=转换器的完整    例如:circle=com.briup.CircleConverter


         
全局转换: 在源文件根目下配置文件:

                      xwork-conversion.properties,

                      内容

                      象完整名称=转换器的完整    例如:com.briup.Circle=com.briup.CircleConverter                

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值