Struts自定义类型转换器之字符串与复合对象之间的转换

      大部分时候,我们使用struts2提供的类型转换器,以及基于OGNL的类型转换器,就能满足大部分的需求了,但在某种特殊的情况下:如字符串要转换成一个复合对象,这时我们就需要使用自定义类型转换器了。自定义类型转换器分为三步走:

      一、提供类型转换器类,继承StrutsTypeConverter抽象类,并实现convertFromString和convertToString方法

      二、提供ActionName-conversion.properties文件,前部分ActionName是对应的需要转换的Action,可以自己定义,后部分-conversion.properties是固定部分,该文件如放在与Action相同的目录,则是局部类型转换器,只对该Action起作用,如果放在web应用下的WEB-INF/classes路径下,则是全局类型转换器。

      三、提供正常的Action与Jsp。

      下面开始类型转换器的开发:

      一、提供类型转换器类UserConverter,代码如下:

public class UserConverter extends StrutsTypeConverter {

	@Override
	public Object convertFromString(Map context, String[] value, Class toType) {
		User user = new User();
		String[] userValues = value[0].split(",");
		user.setName(userValues[0]);
		user.setPass(userValues[0]);
		return user;
	}

	@Override
	public String convertToString(Map context, Object arg) {

		return null;
	}
}


     二、提供ConvertAction-conversion.properties文件,key值对应是的Action中的user属性,value值对应是的类型转换器的类,内容如下:

user=converter.UserConverter

     三、Action与Jsp文件

public class ConvertAction extends ActionSupport {
	private User user;

	public String execute(){
		System.out.println(user.getName());//这里可以获得属性name的值,说明字符串user已与对象User成功转换
		if(user.getName().equals("admin")){
			return SUCCESS;
		}
		return ERROR;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
}


 

<%@page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
<html>
	<head>
		<title>局部类型转换器</title>
	</head>
	<body>
		<h2>局部类型转换器</h2>
		<form action="/struts2/convert.action">
			用户名:<input type="text" name="user" /><br />
			<input type="submit" value="转换" /><input type="reset" value="重置" />
		</form>
	</body>
</html>



这里省略了User实体对象,该对象就包含一下 name属性及getter和setter方法,这里就不再列出。通过上面的配置,我们就可以很轻松的实现了字符串user与实体对象的转换,及字符串user的值转换成了实体对象User的name属性的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值