一.Struts2中如何自定义类型转换器?
接口 实现类
Struts2中如何配置自定义转换器?
1、自定义转换器继承StrutsTypeConverter
2、重写convertFromString和convertToString方法
3、注册转换器
3.1 在Action所在包中建立
Action名-conversion.properties
3.2 在3.1文件中添加以下数据
需要转换的字段名=自定义转换器类的权限定名
birthday=cn.itcast.convertor.DateTypeConvertor
总结
以上的转换器注册时候是与Action的名字相耦合的,因此只能在自己的Action中内部使用,称之为局部转换器注册方式
如下是自定义转换器代码:
public class DateTypeConvertor extends StrutsTypeConverter{
//可以判断多个格式
SimpleDateFormat[] sf = {
new SimpleDateFormat("yyyy/MM/dd"),
new SimpleDateFormat("yyyyMMdd"),
new SimpleDateFormat("yyyy年MM月dd日"),
};
@Override
public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
if(arg1==null||arg2==null) return null;
for(int i=0;i<sf.length;i++)
{
try {
return sf[i].parse(arg1[0]);
} catch (ParseException e) {
continue;} }
return null;
}
@Override
public String convertToString(Map arg0, Object arg1) {
return null;
}
二.Struts2中如何自定义全局类型转换器?
实现的接口和继承的类都是相同的,本质上就是配置的方式不同。
实现
1、自定义转换器继承StrutsTypeConverter
2、重写convertFromString和convertToString方法
3、注册转换器
3.1 在项目src目录下建立以下固定文件
xwork-conversion.properties
3.2 在3.1文件中添加以下数据
需要转换的类类型=转换器类的权限定名
如: java.util.Date= cn.itcast.converter.DateConverter
总结
该拦截器负责对错误信息进行拦截器
<interceptor name="conversionError“
class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>