首先,要定义一个类用于类型转换,继承DefaultTypeConverter,重写convertValue方法
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
public class DateTypeConvert extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object value,
Class toType) {
try {
//context即上下文
//value就是需要进行转换的值(数组)
//toType为将要转换成的类
String[] str = (String[])value;
String s = str[0];
SimpleDateFormat sm = new SimpleDateFormat("yyyyMMdd");
if(toType == Date.class)
{
return sm.parse(s);
}else if(toType == String.class)
{
Date date = (Date)value;
return sm.format(date);
}
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
定义好转换器之后就需要注册转换器。在action包下建立一个 actionName-convertion.properties文件注册,如 Date = com.test.upload,局部类型转换器配置文件前面为类名,后面为固定格式
全局类型转换器,全局类型转换器要求需要转换的参数都是一种格式
类型转换器定义与局部一样,唯一的区别是配置文件需要放在类路径src地下,且命名规则为xwork-convertion.properties