Struts自定义类型转换器之字符串与复合对象之间的转换
2011-11-13 11:53
501 查看
大部分时候,我们使用struts2提供的类型转换器,以及基于OGNL的类型转换器,就能满足大部分的需求了,但在某种特殊的情况下:如字符串要转换成一个复合对象,这时我们就需要使用自定义类型转换器了。自定义类型转换器分为三步走:
一、提供类型转换器类,继承StrutsTypeConverter抽象类,并实现convertFromString和convertToString方法
二、提供ActionName-conversion.properties文件,前部分ActionName是对应的需要转换的Action,可以自己定义,后部分-conversion.properties是固定部分,该文件如放在与Action相同的目录,则是局部类型转换器,只对该Action起作用,如果放在web应用下的WEB-INF/classes路径下,则是全局类型转换器。
三、提供正常的Action与Jsp。
下面开始类型转换器的开发:
一、提供类型转换器类UserConverter,代码如下:
二、提供ConvertAction-conversion.properties文件,key值对应是的Action中的user属性,value值对应是的类型转换器的类,内容如下:
三、Action与Jsp文件
这里省略了User实体对象,该对象就包含一下 name属性及getter和setter方法,这里就不再列出。通过上面的配置,我们就可以很轻松的实现了字符串user与实体对象的转换,及字符串user的值转换成了实体对象User的name属性的值
一、提供类型转换器类,继承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属性的值
相关文章推荐
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
- java中json包的使用以及字符串,map,list,自定义对象之间的相互转换
- Golang 奇葩的时间包之Json与struct对象之间互相转换,JsonDate和JsonTime自定义类型如何实现json编码和解码(二)
- 【JAVA学习】java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- json字符串与对象之间类型转换
- java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- Struts 2读书笔记-----Struts 2的自定义类型转换器
- 利用Google Gson实现JSON字符串和对象之间相互转换
- 让自定义的类型可以和任意的类型之间转换
- Java中字符串和其它类型之间的转换
- Gson在java对象和json字符串之间转换
- JSON对象和字符串之间的相互转换
- 解析JSON对象与字符串之间的相互转换
- node.js JS对象和JSON字符串之间的转换
- DWORD类型与16进制字符串之间的相互转换
- 如何:在各种字符串类型之间进行转换
- Struts(二十):自定义类型转换器
- java 中枚举类型,整型,字符串之间转换
- 如何:在各种字符串类型之间进行转换--如何从 char * 转换为上面列出的其他字符串类型
- 【转载】如何:在各种字符串类型之间进行转换