在struts2中,常见的数据类型都会自动进行类型转换,但是某些特殊的类型转换,当使用量很大时,我们可以使用struts2中的自定义类型转换,实现步骤如下:
1)编写类型转换器--继承StrutsTypeConvert类
2)编写xwork-conversion.properties的配置文件,并放在项目src目录下,内容为: 要转换的类型=类型转换器
具体实现方式代码如下;
我们以坐标类型为例的类型转换器
public class PointConvert extends StrutsTypeConverter{
/**
* context:是ActionContext
* values:要进行类型转换的字符串数组
* toClass:被转换的类型
*
* 将表单提交的字符串数据转换为自定义数据类型
*/
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
String value = values[0];
Point point = new Point();
String x = value.substring(1,value.indexOf(","));
String y = value.substring(value.indexOf(",")+1,value.length()-1);
point.setX(Integer.parseInt(x));
point.setY(Integer.parseInt(y));
System.out.println(x+"---"+y);
return point;
}
/**
* context:是ActionContext
* o:要转换的对象
* 将自定义数据类型转换为字符串数据显示在前台--通过ognl表达式将会使用该方法进行转换
*/
@Override
public String convertToString(Map context, Object o) {
Point point = (Point)o;
String value = "("+point.getX()+","+point.getY()+")";
return value;
}
}
xwork-conversion.properties的配置如下:
实体类包名.Point=转换器包名.PointConvert