Struts2 局部类型转换和全局类型转换实践

来源:互联网 发布:破坏公司网络罪 编辑:程序博客网 时间:2024/06/06 04:31

  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了。。。。。所以之前应该是文件没有读取到。



0 0