在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
本文介绍如何在Struts2框架中实现自定义类型转换,包括创建自定义转换器和配置转换规则的过程。以坐标类型为例,展示了具体的代码实现,并说明了如何将自定义类型与Struts2框架集成。
1758

被折叠的 条评论
为什么被折叠?



