自定义在型转换器
@Override
public Object convertValue(Map<String, Object> context, Object value, Class toType) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try {
if (toType == Date.class) {// 要转换的参数类型value(birthday),toType(Date)
// 把参数转成字符串数组,再把字符串数据转换成Date类型
String[] params = (String[]) value;
return dateFormat.parse(params[0]);
} else if (toType == String.class) {// 要转换的参数类型value(birthday),toType(Date)
// 把参数转成Date类型,再把Date类型转成字符串
Date date = (Date) value;
System.out.println(date+"String.class:" + toType.getClass());
return dateFormat.format(date);
}
} catch (Exception e) {
}
return null;
}
将上面的类型转换器注删除为局部类型转换器:
在Action类所在的包下放置ActionClassName+conversion.properties文件,ActionClassName是Action类型,后
面的-conversion.properties是固定写法,寻于本例而言,文件的名称应为HelloWorldAction-conversion.properties。
属性名称=类型转换器的全类名
寻于本例而言,HelloWorldAction-conversion.properties文件中的内容为:
birthday=cn.itcast.e_action.DateTypeConverter
局部类型转换器
1,继承一个类型转换器进行定义
2,注册局部类型转换器
package cn.itcast.d_action;
import java.util.Date;
public class HelloWorldAction {// 2010-10-10
private Date birthday;
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
System.out.println(birthday);
this.birthday = birthday;
}
public String execute() {
return "success";
}
}
package cn.itcast.e_action;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;
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) {// 接收的参数是Data类型
// 把参数转成字符串数组,再把字符串数据转换成Date类型
String[] params = (String[]) value;
return dateFormat.parse(params[0]);
} else if (toType == String.class) {// 接收的参数是String类型
// 把参数转成Date类型,再把Date类型转成字符串
System.out.println("String.class:" + toType.getClass());
Date date = (Date) value;
return dateFormat.format(date);
}
} catch (Exception e) {
}
return null;
}
}
birthday=cn.itcast.e_action.DateTypeConverter