局部把String类型的birthday变量转换成Date类型
新建一个class,在Superclass中点击Browse,在文本框里输入DefaultTypeConverter,最好选择com.opensymphony.xwork2.conversion.impl这一项,
新建好class后,右键Source里选择Override/Implement Methods选择convertValue(Map,Object,Member,String,Object,Class)
package cn.type.converter; //转换器的方法类
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 DateTypeConverter extends DefaultTypeConverter {
public Object convertValue(Map context, Object value, Class toType) {
// TODO Auto-generated method stub
System.out.println("已经进入类型转换器");
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyyMMdd");
try{
if(toType==(Date.class)){ //字符串向Date转换时
String[] paramss= (String[]) value;
return dateFormat.parse(paramss[0]); //以数组形式转换变量,当变量为一个时
}
else if(toType==(String.class)){ //Date向字符串转换时
Date date=(Date) value;
return dateFormat.format(date);
}
}
catch(ParseException e){}
return null;
}
}
package cn.action; //传参的方法
import java.util.Date;
public class HelloWordAction {
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String execute() throws Exception{
return "success";
}
}
局部转换器要在要转换的变量类的同一个文件夹下新建File文件,命名为变量所在类的名字-conversion.properties
文件内容birthday=cn.type.converter.DateTypeConverter//birthday是要转换的变量名称,右边是重写的方法的全名,语句后不要加任何标点符号
全局转换器
只需要把HelloWordAction-conversion.properties改名为xwork-conversion.properties
并把这个文件放在所有类的根目录下,比如说src下
文件内容java.util.Date=cn.type.converter.DateTypeConverter