自定义类型转换器分两种局部类型转换器和全局类型转换器:
接收格式为yyyy-MM-dd的日期时,Struts2框架可以自动转换;当格式为yyyyMMdd时用类型转换器来处理。
1、局部类型转换器
public class DateTypeConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object value, Class toType) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try {
if(toType == Date.class){//当字符串向Date类型转换时
String[] params = (String[]) value;// request.getParameterValues()
return dateFormat.parse(params[0]);
}else if(toType == String.class){//当Date转换成字符串时
Date date = (Date) value;
return dateFormat.format(date);
}
} catch (ParseException e) {}
return null;
}
}
在Action类所在的包下放置ActionClassName-conversion.properties文件,文件内容为:属性名称=类型转换器的全类名
本例中,
文件名称为:HelloWorldAction-conversion.properties
文件内容为:birthday=cn.itcast.conversion.DateTypeConverter
2、全局类型转换器
在WEB-INF/classes下放置xwork-conversion.properties文件,内容为:
待转换的类型=类型转换器的全类名
本例中,xwork-conversion.properties中件中内容为:
java.util.Date=cn.itcast.conversion.DateConverter