首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts自定义数据类型转换的两种模式的对比

2012-09-20 
struts自定义数据类型转换的两种方式的对比??? 对于自定义类型转换类,可以利用struts框架提供的“org.apach

struts自定义数据类型转换的两种方式的对比

??? 对于自定义类型转换类,可以利用struts框架提供的“org.apache.struts2.util.StrutsTypeConverter ”抽象类,它是“ognl.DefaultTypeConverter ”的抽象子类,有两个方法,一个是表单参数转换成属性对应数据类类型的方法,另一个是属性数据类型转换成表单字符串类型。相比于直接继承“ognl.DefaultTypeConverter ”类进行自定义类型转换类,继承StrutsTypeConverter类更加直观,因为它把两个不同转换过程封装成两个不同的方法,而在DefaultTypeConverter 类中,是通过if~~~else~~~进行分类转换,容易出错。

  以下是两种不同方式的对比代码,以转换成point(坐标)类型为例:

?

①通过继承StrutsTypeConverter 类设计自定义的类型转换类package com.hzp.converter;import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;import com.hzp.bean.Point;public class ConvertPoint2 extends StrutsTypeConverter { public Object convertFromString(Map map, String[] value, Class toType) {  // 从表单转换成对应属性类型  String[] str = (String[]) value;  String p = str[0];  String[] strPoint = p.split(",");  Point point = new Point();  point.setX(Integer.parseInt(strPoint[0]));  point.setY(Integer.parseInt(strPoint[1]));  return point; } public String convertToString(Map map, Object o) {  //从属性对象转化成表单string类型  Point point = (Point) o;  String x = Integer.toString(point.getX());  String y = Integer.toString(point.getY());  String result = "(" + x + "," + y + ")";  return result; }} ②直接继承DefaultTypeConverter 类设计自定义类型转化类package com.hzp.converter;import java.util.Map;import com.hzp.bean.Point;import ognl.DefaultTypeConverter;public class ConvertPoint extends DefaultTypeConverter { public Object convertValue(Map context, Object value, Class toType) {  //从表单转换成对应属性类型  if (Point.class == toType) {   String[] str = (String[]) value;   String p = str[0];   String[] strPoint = p.split(",");   Point point = new Point();   point.setX(Integer.parseInt(strPoint[0]));   point.setY(Integer.parseInt(strPoint[1]));   return point;  }   //从对应属性类型转换成字符串给显示页面  else if(String.class == toType) {   Point point = (Point) value;   String x = Integer.toString(point.getX());   String y = Integer.toString(point.getY());   String result = "(" + x + "," + y + ")";   return result;  } else {   return null;  } }}

?

热点排行