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

Struts2中的类型转换器

2016-10-28 00:00 363 查看
在servlet中如果我们前台提交的String类型的数据与我们后台所需要的数据不一致时,这时我们需要进行手动的进行转换,例如:

String strAge = req.getParameter("age");
if(strAge != null){
age = Integer.parseInt(strAge);
}
而在struts12中比较常见的类型转换struts2通过拦截器已经帮我们完成了,不需要我们进行手动的进行转换,而一些自定义的类型,还是需要我们自己进行手动转换,而这种转换,我们不应该放在action中,因为当我们需要转换的同一类型的数据较多时,这样将会增加很多的代码量,而正确的实现方式是写一个转换类,这个类继承抽象类StrutsTypeConverter,实现里面没有实现的方法。然后编写一个xwork-conversion.properties的配置文件,文件内容是:需要转换的类型=继承了StrutsTypeConverter的转换类。这样也就完成了类型的转换,例如:

public class PointConverter extends StrutsTypeConverter {

@Override
public Object convertFromString(Map context, String[] values, Class toClass) {
// TODO Auto-generated method stub
String value = values[0];
System.out.println(value);
Point point = new Point();
String x = value.substring(1,value.indexOf(","));
String y = value.substring(value.indexOf(",")+1,value.indexOf(")"));
point.setX(Integer.parseInt(x));
point.setY(Integer.parseInt(y));

return point;
}
erride
public String convertToString(Map context, Object o) {
// TODO Auto-generated method stub
Point point = (Point)o;
return "("+point.getX()+","+point.getY()+")";
}
}
注意:运用ognl表达式在前台进行取数据是通过值栈来获取数据,即需要通过convertToString()这个方法进行获取数据,而使用EL表达式的取值方式是:page->response->session->application.这样的遍历方式进行取值,所以不需要通过convertToString()该方法,如果取的是一个对象的话则是直接去调用的toString方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: