struts2类型转换和验证

来源:互联网 发布:张国荣和四大天王 知乎 编辑:程序博客网 时间:2024/05/23 02:02

struts2类型转换

null属性的处理

当属性是一个javaBean时,将由对象工厂创建所需的对象,
当属性是声明为一个Collection或者是List,那么将构建一个ArrayList
当属性声明为一个Map 时将构建一个HashMap,

jsp页面为List,Map,Set赋值

javaBean
javaBean变量名.属性 的方式为javaBean的属性赋值
List
变量名[index].属性 index是里list的索引  
可以使用泛型或是配置文件指定List存储的类型
配置文件
Element_list变量=存储类型的全类名
Map
和List一样 ,只不过索引可以不是整形,例如字符串啊
变量名[索引名].属性 或 变量名.索引名.属性
迭代Map其实是迭代Map返回的entrySet集合
可以使用泛型或是配置文件指定Map存储的类型
配置文件
指定value: Element_Map变量=存储类型的全类名
指定key: Key_Map变量=存储类型的全类名
Set
当set存在的唯一标识有效时
变量名(唯一标识的值).属性
当set存在的唯一标识无效时
变量名.setNew[index].属性
这里是新建一个对象并为它的属性赋值。
注意:这里的index只是区别你要创建的对象,不代表你创建对象的唯一标识的值,
唯一标识可以是字符串,

因为Set是不维护存储对象的顺序,所以Struts2提供了用set存储对象
的一个属性作为唯一识别即索引,来查找对象的方法,这就要求set不为空,在我的版本2.3中,

会默认创建set,当set为空时。


并且要指定唯一标识,通过 类名-conversion.properties 文件指定唯一标识
KeyProperty_要转化的变量名=唯一标识名。
Element_Set变量=存储的全类名 ,当然这里也可以通过泛型指出
配置文件还可以指定是否当属性为空时要自动创建对象。
CreateIfNull=true

全局类型转换器

在类路径下配置一个xwork-conversion。properties文件
里面指定要转化的类型
java.lang.Date=com.xiaoming.struts.DateConversion

通过注解配置类型转化


类型转化出错的处理

错误保存在里ActionContext的ConversionErrors里面
对于某个类的字段单独指定,在 类的国际化资源 文件中,
invalid.fieldvalue.xxx=message的方式指定
对于转换错误默认在I18N键xwork.default.invalid.fieldvalue里面定义
可以在国际化资源文件里面覆盖,这也就是全局类型转化配置错误消息的配置
键就是xwork.default.invalid.fieldvalue值自定义,国际化资源文件就是
在struts中配置的默认的资源文件key=struts.custom.i18n.resources 值是默认的资源文件名,
这里的配置请参考国际化配置。
这些错误在ActionContext被添加到了conversionErrors的一个map中 

struts2数据验证

手动验证

Action中编程验证不推荐

在validateXxx()方法中验证
Xxx是方法名第一个字符大写,
拦截器还会检测validateDoXxx方法
在validate()中验证
所有的validateXxx()方法之后调用

通过框架验证

字段验证
验证错误别写在fieldErrors里面
ActionContext里面提供了方法
普通验证(非字段验证)
例如说两次输入的密码要相等
普通验证优先于字段验证,普通验证的执行顺序安装配置顺序决定
验证错误写在actionErrors里面
错误显示
com.opensymphony.xwork2.ValidationAware里面定义了错误消息保存的方法
短路验证
在验证器上配置一个short-circuit="true",这样当出现错误时就不会
向下执行后面的验证器了
自定义验证器
在类路径下建立文件validators.xml
strut2内置的验证器
在xwork-core-2.3.30.jar包下的default.xml文件中
配置验证规则
Action类名-validation.xml
为Action下的所有方法都配置验证规则
Action类名-请求名-validation.xml
为Action下的某个请求配置验证规则
验证文件的查找
Action类名-validation.xml所有的请求都会默认查找这个文件,
先于Action类名-请求名-validation.xml文件被查找
文件的配置规则是叠加的,不是覆盖
0 0
原创粉丝点击