一、 基于OGNL的类型转换器
Struts2的类型转换器都需要实现一个TypeConverter接口,该接口位于ognl.jar包内,也是就Struts2框架的转换器使用了OGNL技术。该接口定义了一个convertValue()方法,实现该接口的类型转换器实现类都需要重写该方法来进行类型转换。OGNL还提供了一个实现TypeConverter接口的类DefaultTypeConverter,开发者只要继承该类,就可以开发类型转换器的实现类。
DefaultTypeConverter类的子类需要重写convertValue()方法,来实现字符串类型与复合类型之间的双向转换。convertValue()方法有三个参数:Map context:该参数为类型转换环境的上下文内容;Object value:该参数为需要转换的参数;Class toType:该参数指的是转换目标的类型。 以下为示例:
public class PointConverter extends DefaultTypeConverter {
public Object convertValue(Map context,Object value,Class toType){
System.out.println("正在转换...");
if(toType==Point.class){
String[] p=(String[])value;
Point point=new Point();
String[] pp=p[0].split(",");
point.setX(pp[0]);
point.setY(pp[1]);
return point;
}
else if(toType==String.class){
Point point=(Point) value;
return "<"+point.getX()+","+point.getY()+">";
}
return null;
}
注意:可以看到,convertValue()方法是通过toType