Struts类型转换实现

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

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

import ognl.DefaultTypeConverter;
public class UserConverter extends DefaultTypeConverter {
	@Override
	public 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 {
 
	@Override
	public 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;
	}

	@Override
	public 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值