您的位置:首页 > 编程语言 > Java开发

Struts2 的类型转换

2014-03-07 21:43 337 查看
1 总体概述:将String类型转化为自定义类型,是浏览器传递的参数转换成相应的对象类型,从服务器跳转到浏览器页面是自定义类型(对象类型)到String类型的转换。

2 流程:当浏览器提交到一个action时候,会找到相应的action类,当调用action类里面set。。方法的时候struts2会自动检测有没有自定义类转换(也就是去找有没有xxAction-conversion.properties文件或者xwork-conversion.properties文件),如果有,则根据.properties文件中的配置找到相应的转换类进行相应的转换。xxAction-conversion.properties文件是局部的类型转换,xwork-conversion.properties文件是一种全局的转换

3 自定义类型转换类的书写有两种方法:

(一)继承DefaultTypeConverter类,重写convertValue(Map context, Object value, Class toType)方法,其中有三个参数,第一个不考虑一般,第二个参数value是一个数组,一定要将其转换为数组类型,第三个参数代表要转换成的类型,是一个对象类型还是一个String类型。

@Override

public Object convertValue(Map context, Object value, Class toType) {

if(Point.class==toType){//转换成自定义类型,

Point point=new Point();

String [] str=(String[]) value;

String [] paramValues=str[0].split(",");

int x=Integer.parseInt(paramValues[0]);

int y=Integer.parseInt(paramValues[1]);

point.setX(x);

point.setY(y);

return point;

}

if(String.class==toType){//如果目标类型是一个String类型,代表服务器向浏览器输出

Point point=(Point) value;

int x=point.getX();

int y=point.getY();

String result="[x="+x+" , y="+y+"]";

return result;

}

return null;

}

(二)继承StrutsTypeConverter类

重写convertFromString(Map context, String[] values, Class toType)方法和public String convertToString(Map map, Object o)方法,里面的参数用法和方法一一样了,因为StrutsTypeConverter这个类是一个抽象类,继承了DefaultTypeConverter

public class Pointconverter3 extends StrutsTypeConverter{

@Override

public Object convertFromString(Map context, String[] values, Class toType) {

List<Point> list=new ArrayList<Point>();

for(String value:values){

Point point=new Point();

String [] paramValues=value.split(",");

int x=Integer.parseInt(paramValues[0]);

int y=Integer.parseInt(paramValues[1]);

point.setX(x);

point.setY(y);

list.add(point);

}

return list;

}

@Override

public String convertToString(Map map, Object o) {

List<Point> list=(List<Point>) o;

StringBuilder sb=new StringBuilder();

sb.append("[");

for(Point point:list){

int x=point.getX();

int y=point.getY();

System.out.println(x);

sb.append("x=").append(x).append(",");

sb.append("y=").append(y);

}

sb.append("]");

return sb.toString();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: