1.先写一个自定义转换器
public class DataTypeConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map<String, Object> context, Object value, Class toType) {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
try {
if (toType == Date.class) {
String params[] = (String[]) value;
return df.parse(params[0]);
} else if (toType == String.class) {
Date date = (Date) value;
return df.format(date);
}
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
}
注意:DefaultTypeConverter 可继承自两个包都可行,她们分别是:com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter和ognl.DefaultTypeConverter。
2.在action中定义属性,并给于set和get:
private Date birthDay;
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public String execute() {
System.out.println(birthDay+"-----");
return "success";
}
在视图中输出${birthDay}
3.局部类型转换:在action所在的目录下新建xxxAction-conversion.properties文件,内容为:birthday=cn.xxx.type.DataTypeConverter.
全局类型转换:在src下或WEB-INF下新建xwork-conversion.properties文件,内容为:java.util.Date=cn.xxx.type.DataTypeConverter.
4.在请求中传递日期字符串20151225
5.预期结果应该是上图中输出:20151225,并在控制台输出:20151225-----.但实际在控制台输出null----。这是啥原因造成的呢。
我把xwork-conversion.properties放在src路径下就ok了。。。。。所以之前应该是文件没有读取到。