struts2(2012/2/24)

1、struts2的类型转换,对于8个原生数据类型以及Date,String等常见类型,struts2可以使用内建的类型转换器实现自动转换;但对于自定义的对象类型来说,就需要我们自己指定类型转换的方式了。

2、对于自定义的类型转换器来说需要提供3个信息:Action的名字、Action中待转换的属性名以及该属性对应的类型转换器。其中Action的名字是通过属性文件名来获得的;Action中待转换属性名是通过属性文件中的key来获得的;该属性对应的类型转换器是通过该key所对应的value来获得的。

3、可以使用struts2框架自带的类型转换器StrutsTypeConverter简化类型转换代码的编写,strutsTypeConverter继承与DefaultTypeConverter父类,并且提供了两个抽象方法:converFromString与converToString,分别表示从页面的字符转换为后台对象以及从后台对象转换为页面的字符串,我们只需事先这两个抽象方法即可实现类型转换。

4、全局类型转换:在src目录下新建xwork-conversion.properties,该文件的内容是待转换的类=转换器的名字,即

com.xyh.bean.UserBean=com.xyh.converter.UserConverter

5、 Struts2也支持自定义方法,即在struts.xml中的action元素内定义method属性,属性值即为待执行的方法。其中,该方法的声明要与execute保持一致。但是不推荐使用这种方式,因为它容易导致Action代码混乱。
6、执行流程:

1)首先进行类型转换

2)然后进行输入校验(执行validate方法)

3)如果上述过程中出现任何错误,都不会再去执行execute方法,页面会转向strusts.xml中该action的名为input的result所对应的页面。

7、ActionSupport类的addActionError()方法的实现:首先创建一个ArrayList对象,然后将错误消息添加到该ArrayList对象中。

8、当调用getActionErrors()方法返回Action基本的错误信息列表时,返回的实际上上集合的一个副本而不是集合本身,因此对集合副本调用clear()方法清除的依旧是副本的元素而非原集合中的元素,此时原集合中的内容没有受到任何的影响。换句话说,Action级别的错误信息列表对开发者来说是只读的

9、FieldError级别的错误信息底层是用LinkedHashMap实现的,该Map的key是String类型,value是List<String>类型,这就标识一个Field Name可以对应多条错误信息,这些错误信息都放置在List<String>集合当中。

10、Action中自定义方法的输入校验,对于通过action的method属性所指定的自定义方法,其对应的自定义输入校验方法名为validateMyExecute(假设自定义方法名为myExecute)。底层是通过反射来调用的

11、当在Action中指定了自定义的execute方法时,首先会执行自定义的execute方法所对应的输入校验方法,然后再去执行validate方法,执行完毕后如果出现了任何错误都不会再去执行自定义的execute方法,流程转向了input这个名字所对应的页面上。

12、自定义Field级别的错误提示消息

1)新建一个以Action名命名的properties文件,如RegisterAction.properties

2)然后在该属性文件中指定每一个出错字段的错误消息:

       如:Invalid.fieldvalue.birthday=birthday invalid!

13、Struts2的校验框架(有效的xml文件),具体来说分为字段优先(field)校验器与校验器优先(validator)校验器。

 14、对于国际化的资源文件,其命名规则是:package_语言名_国家名.properties

15、Struts2框架校验执行的先后顺序:

1)首先执行校验框架(xml文件)

2)执行自定义方法的校验方法(如:validateMyExecute)

3)执行validate方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值