三种方法可以创建自定义类型转换器:
实现ognl.TypeConverter接口
继承DefaultTypeConverter类
继承StrutsTypeConverter类
一般使用继承DefaultTypeConverter类
注册自定义类型转换器有两种方法:
特定类型转换器:只有特定的Action才可以使用
注册方法:在Action所在的包中建立properties文件,文件名格式:Action类名-conversion.properties,内容如下:
要转换的Action类的属性名=类型转换器全限定名
例如:
birthday=com.y.DateTypeConverter
其中:birthday是action属性名
全局类型转换器:所有Action都可以使用
注册方法:在classpath下建立名为xwork-conversion.properties的文件,内容如下:
目标类型(全限定名)=类型转换器全限定名
例如: Java.util.Date=com.y.converter.DateTypeConverter
类型转换错误处理
要向用户报告类型错误,需要实现下面三个步骤:
1、引用defaultStack拦截器栈(包含了conversionError拦截器)
2、让Action类从ActionSupport继承(实现了ValidationAware接口)
3、为Action配置添加input结果映射
在com. y.action.LoginAction相应的包新建LoginAction.properties文件,并添加下列内容:invalid.fieldvalue.user.birthday=无效字段值
或者在com.y.vo.User相应的包中新建User.properties文件,并添加下列内容:invalid.fieldvalue.birthday=无效字段值