1. 在struts2中,相比servlet来时,获取数据时,程序员没有进行手动的类型转换,类型转换工作都有struts2来完成处理,但对于自定义类型数据,struts2不会帮助我们完成类型转换工作。这个时候就需要程序员来完成类型转换。
2. 实现自定义类型转换器的步骤:
(a). 定义一个类型转换器,该类继承StrusTypeConverter
public class PointConverter extends StrutsTypeConverter{ /** * 从字符串转换为指定的类型 * context 表示ActionContext * values 要被转换的字符串 * toClass 要被转换的类型 */ @Override public Object convertFromString(Map context, String[] values, Class toClass) { String value=values[0]; int x = Integer.parseInt(value.substring(1,value.indexOf(","))); int y = Integer.parseInt(value.substring(value.indexOf(",")+1,value.length()-1)); Point p = new Point(); p.setX(x); p.setY(y); return p; } /** * 使用ognl表达式将调用该方法 * 将指定的对象转换为字符串 * context actionContext * o 要转换的对象 */ @Override public String convertToString(Map context, Object o) { Point p = (Point)o; return "("+p.getX()+","+p.getY()+")"; } }
(b).添加全局配置文件xwork-conversion.properties放在src下:
#converted class=converter cn.sxt.vo.Point = cn.sxt.converter.PointConverter