继承一、自定义类型转换器
1.局部类型转换器
声明一个类继承DefaultTypeConverter 或继承StrutsTypeConverter
重写converValue方法
例:
public class Dateconverter extends DefaultTypeconverter{
@Override
public object convertValue(Map 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;
}
}
public class StringToDate extends StrutsTypeConverter {
@Override
public Object convertFromString(Map arg0, String[] values, Class arg2) {
//values为什么是数组。假设页面用复选框传值,所有的值就会存放在数组中
//arg2 为目标类型
if(arg2==Date.class)//目标类型和时间类型相等说明要转换时间。
{
Date d=new Date(values[0]);
return d;
}
return null;
}
@Override
public String convertToString(Map arg0, Object arg1) {
// TODO Auto-generated method stub
return null;
}
}
2.在Action类所在的包下放置(“action的类名”-conversion.properties)文件,后面
的-conversion.properties是固定的写法。
3.在properties文件中的内容为:(要转换的Action)属性名称=定义的类型转换器类(带包名)
例
time=什么包下的.DateConverter
2.全局类型转换器
基本和局部差不多就是把属性文件放在src跟目录下
属性文件名必须改成xwork-conversion.properties
在properties文件中的内容为:待转换的类型=定义的类型转换器类(带包名)
例
java.util.Date=什么包下的.DateConverter