在使用servlet开发中,表单中提交的数据到servlet后都是字符串类型,需要程序员手动进行类型转换。
但是到struts2后,基本数据类型struts2都可以转换。但是如果是自定义类型,struts2也不能自动转换。
这个时候需要程序员进行手动转换或者使用struts2提供的类型转换机制来实现。
案例:假如在页面上提交一个坐标点,如何在处理类中获取的也是坐标对象信息。
使用struts2的类型转换机制步骤:
1.编写类型转换器,该类型转换器继承StrutsTypeConverter ,由ognl调用
代码语言:javascript复制/**
* 自定义类型转换器
* @author siggy
*
*/
public class PointConverter extends StrutsTypeConverter{
/**
* 从字符串转换为指定的类型
* context 是ActionContext
* values 是表单提交数据
* toClass 要转换的类型
*/
@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
System.out.println("执行类型转换器");
String value=values[0];//value=(2,3)
Point point = new Point();
point.setX(Integer.parseInt(value.substring(1, value.indexOf(","))));
point.setY(Integer.parseInt(value.substring(value.indexOf(",") 1,value.length()-1)));
return point;
}
/**
* 从指定类型转换为字符串
*/
@Override
public String convertToString(Map context, Object obj) {
Point point = (Point)obj;
return "(" point.getX() "," point.getY() ")";
}
}
2.编写类型转换器的配置文件
全局的配置文件放于src下 名称为 xwork-conversion.properties
代码语言:javascript复制#toClass=class converter
cn.sxt.vo.Point=cn.sxt.converter.PointConverter