文章目录
  1. 1. 配置局部类型转化器
  2. 2. 配置全局类型转换器

在struts开发中,有时会遇到这样的情况:

如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用。
我们用如下代码定义类型转换器,用来实现字符串格式(“20150601”)和日期格式之间的双向转换,自定类型转换器要继承DefaultTypeConverter:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class TypeConverter extends DefaultTypeConverter{
@Override
public Object convertValue(Map<String, Object> context, Object value,Class toType) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
try{
if(toType==Date.class){
String[] params = (String[]) value;
return dateFormat.parse(params[0]);
}
else if(toType==String.class){
Date date = (Date)value;
return dateFormat.format(date);
}
}
catch (Exception e) {}
return null;
}
}

配置局部类型转化器

在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法,
本例中应该是:

1
HelloWorldAction-conversion.properties

Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)
本例中应该是:

1
birthday = com.zju.struts.DateTypeConverter

配置全局类型转换器

如果业务需求所有的日期都要转换,则可以使用全局类型转换器,只要在src根目录下面放置xwork-conversion.properties文件,并且properties文件中的内容为:
待转换的类型=类型转换器的全类名
本例中应该是:

1
java.util.Date = com.zju.struts.DateTypeConverter

文章目录
  1. 1. 配置局部类型转化器
  2. 2. 配置全局类型转换器