Struts2类型转换(一) 常规类型,自定义类型,错误处理2010-01-06 javaeye elf8848Struts2的类型转换是基于OGNL表达式的.有良好的扩展性.WEB应用接收到表单提交的数据都 是String类型的,Struts2可方便的转换为 常规类型(数值,日期)/ 自定义类型(User,Point类).如果转换中出现异常,conversionError拦截器会自动处理该异常.一, 常规类型的转换:比如表单提交的信息有 用户名,生日, 年龄, Action中对应的数据类型分别是 String, Date, int.没什么好说的, Struts2会自动完成.Struts2内建了常用的类型转换器,如String,boolean,char,int,long,float,double,Date, 数组(假定元素是String类型), 集合(假定元素是String 类型,用ArrayList封装)二,自定义类型的转换(方法一): 这种方法用用来转换复杂对象ONGL项目中有一个TypeConverter接口,是实现转换器必须实现的接口,这个接口有点复杂,所以OGNL还 提供了该街接口的一个实现类ognl.DefaultTypeConverter,通过继承该类重写convertValue方法,实 现自定义类型的转换.方法是这样的convertValue(final Map context, final Object value, final Class toType)第一个参数:context 是类型转换环境的上下文第二个参数 : value 是须要转换的参数,方向不同,value的类型也是不同的.第三个参数 : toType是转换后的 目标类型,返回值是 : 转换后的目标类型, 方向不同,类型也是不同的.Struts2自己有一 个抽象类继承自 DefaultTypeConverter类,是StrutsTypeConverter.就是转换的两个分别对应两个抽象 方法, 其实都一样,换汤不换药,百变不离其中.所以我们也可以继承 StrutsTypeConverter类.下 面做一个自定义类型转换的实例:1.表单是这样的:

输入一个用 豆号分隔的两 个数字, 代表一个坐标点的X,Y值.2.Point 对象如下,用来封装表单信息.Java代码
package ssh.org.util;
public class Point
{
private int x;
private int y;
}
Java代码
public class LoginAction extends ActionSupport
{
private Point point;
set,get方法略...
@Override
public String execute()throws Exception
{
return "success";
}
}