Struts类型转换实现

来源:互联网 发布:阿里云如何备份 编辑:程序博客网 时间:2024/05/17 07:50

          对于自定义的类型转化器需要提供3个信息:Action的名字,Action中待转换的属性名以及该属性对应的类型转换器,其中Action的名字是通过属性文件来获得的,Action中待转换的属性名是通过属性文件中的key来获得的,该属性对应的类型转换器是通过Key所对应的value来获得的。

       直接集成DefaultTypeConverter 实现类型转换。

import ognl.DefaultTypeConverter;public class UserConverter extends DefaultTypeConverter {@Overridepublic Object convertValue(Map context, Object value, Class toType) {if(User.class==toType){//页面向后台对象转换String[] str=(String[])value;String firstValue=str[0];StringTokenizer st=new StringTokenizer(firstValue,";");String username=st.nextToken();String password=st.nextToken();User user=new User();user.setUsername(username);user.setPassword(password);return user;}else if(String.class==toType){//后台对象向页面转换User user=(User)value;String username=user.getUsername();String password=user.getPassword();String userinfo="username:"+username+",password:"+password;return userinfo;}return null;}}
     使用Struts2框架自带的类型转换器StrutsTypeConverter简化了继承DefaultTypeconversion代码编写。StrutsTypeconversion也是继承DefaultTypeconversion,但是他提供了两个抽象方法:ConverFormstring与ConvertertoString,分别表示从页面的字符串转为后台对象以及从后台对象转换为页面的字符串,我们只需实现这两个抽象方法就可以了。

  

public class UserConverter2 extends StrutsTypeConverter { @Overridepublic Object convertFromString(Map context, String[] values, Class toClass) {User user=new User();String value=values[0];StringTokenizer st=new StringTokenizer(value,";");user.setUsername(st.nextToken());user.setPassword(st.nextToken());return user;}@Overridepublic String convertToString(Map context, Object o) {User user=(User)o;String username=user.getUsername();String password=user.getPassword();String userinfo="username:"+username+",password:"+password;return userinfo;}}
全局转换:在Src目录下建 xwork-conversion.properties,该文件的内容是待转换的类==转换器的名字,即

com.TGB.Bean.User=com.TGB.Converter.UserConver





0 0