Struts2之自定义局部类型转换器、全局类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器

(1)局部类型转换器 
如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用。

以下为局部类型转换器的开发步骤
a.首先要写一个类来继承DefaultTypeConverter
b.然后覆盖convertValue这个方法,在里面进行数据转型 
c.在action类所在的包下放置ActionClassName-conversion.properties文件,ActionClassName是类名,后面的-conversion.properties是固定的写法, 
如:HelloWorldAction-conversion.properties

d.Properties文件里面的内容为:属性名称=类型转换器的全类名(既包名.类名)

如:birthday=com.ljq.type.converter.DateTypeConverter


public class DateTypeConverter extends DefaultTypeConverter {

	@Override
	public Object convertValue(Map<String, Object> context, Object value, Class toType) {
		SimpleDateFormat format=new SimpleDateFormat("yyyyMMdd");
		try {
			if(toType==Date.class){
				String[] params=(String[])value;
				return format.parse(params[0]);
			}else if(toType==String.class){
				Date date=(Date)value;
				return format.format(date);
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}
}
HelloEntity-conversion.properties:
birthday=com.type.date.DateTypeConverter


(1)全局类型转换器

全局类型转换器只需要将局部类型转换器的名称改为 xwork-conversion.properties,并将其文件放在src目录下,将其配置内容更改为:

java.util.Date=com.type.date.DateTypeConverter
即可实现全局类型的转换;

注:全局类型的转换要注意,必须整个项目中所有的特定类型都是相同的传输格式才能够使用全局类型转换。

posted @ 2015-10-09 17:46  Bodi  阅读(1940)  评论(0编辑  收藏  举报