struts2中的类型转换器是copy ONGL的类型转换器。
从页面获取的数据都是String 或者String[]类型的,所以,转换器就是把string,string[]类型转换成pojo中的数据类型,或者把pojo中的数据类型转换成string或者string[]类型
struts2的类型转换的结构如下:
所以,如果我们想自己编写其类型转换器就只需继承strutstypeconverter
主要有两个方法,一个是字符串转换为其它类型,另一个是其它类型转换为字符串
package com.yu.web.converter;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
public class MyTypeConverter extends StrutsTypeConverter {
DateFormat df= new SimpleDateFormat("MM/dd/yyyy");
//字符串数据转换成所需类型
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
// TODO Auto-generated method stub
//首先,判断数据是否为空
if(values==null||values.length==0){
return null;
}
//取出字符串
String str=values[0];
if(toClass==java.util.Date.class){
try {
return df.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
return null;
}
//其它类型转换成字符串
/**
* context:存放动作访问中的所有数据
* o:要转换的对象
*/
@Override
public String convertToString(Map context, Object o) {
// TODO Auto-generated method stub
if(o instanceof Date){
Date date= (Date)o;
return df.format(date);
}
return null;
}
}
编写了类型转换器,怎么使用它了,要使用类型转换器,就得注册该转换器
第一种:局部类型转换器,按照属性来转换,在要转换属性的javabean包目录下,创建一个.properties文件,文件名称为:javabean-conversion.properties文件
文件中写属性名=类型转换器类的全名称
birthday=com.yu.web.converter.MyTypeConverter
第二种:在全局类型转换器
在classpath(一般是src)下,建立一个名称(不能更改)为xwork-conversion.properties的属性文件
文件中编写 要转换的类型=类型转换器类的全名
java.util.Date=com.yu.web.converter.MyTypeConverter