博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2类型转换
阅读量:6291 次
发布时间:2019-06-22

本文共 3627 字,大约阅读时间需要 12 分钟。

     假设有如下的输入界面:

    在上面输入abc,xyz模式的字符串,其中abc作为用户的用户名,xyz作为用户的密码,系统希望将上边的字符串转换成一个User实例。

     1、LoginAction.java

1: package cc.openhome;
2: import com.opensymphony.xwork2.Action;
3: import com.opensymphony.xwork2.ActionSupport;
4: public class LoginAction extends ActionSupport implements Action {
5:   private User user;
6:   private String tip;
7:
8:   public User getUser() {
9:     return user;
10:   }
11:
12:   public void setUser(User user) {
13:     this.user = user;
14:   }
15:
16:   public String getTip() {
17:     return tip;
18:   }
19:
20:   public void setTip(String tip) {
21:     this.tip = tip;
22:   }
23:
24:   public String execute() throws Exception {
25:     // TODO Auto-generated method stub
26:     if(getUser().getName().equals("nihao") && getUser().getPass().equals("ni")){
27:       setTip("转换成功");
28:       return SUCCESS;
29:     }else{
30:       System.out.println("失败!");
31:       setTip("失败成功");
32:       return ERROR;
33:     }
34:   }
35: }

    2、User.java

1: package cc.openhome;
2: public class User {
3:   private String name;
4:   private String pass;
5:   public String getName() {
6:     return name;
7:   }
8:   public void setName(String name) {
9:     this.name = name;
10:   }
11:   public String getPass() {
12:     return pass;
13:   }
14:   public void setPass(String pass) {
15:     this.pass = pass;
16:   }
17: }

    3、实现类型转换器UserConverter.java

1: package cc.openhome;
2: import java.util.Map;
3: import ognl.DefaultTypeConverter;
4: public class UserConverter extends DefaultTypeConverter {
5:   //类型转换器必须重写convertValue的方法,该方法需要完成双向转换。
6:   public Object convertFormString(Map context, String[] values, Class toType ){
7:     System.out.println("此方法执行了、、、、、、");
8:     //将需要将字符串向User类型转换时
9:     User user=new User();
10:     String[] userValue= values[0].split(",");
11:     user.setName(userValue[0]);
12:     user.setPass(userValue[1]);
13:     return user;
14:   }
15:   public String convertToString(Map context, Object o){
16:     User user=(User) o;
17:     return "<"+user.getName()+","+user.getPass()+">";
18:   }
19:
20: }
21:

    4、定义一个局部类型转换器

        建立一个文件LoginAction-conversion.properties,该文件由key-value对组成。

1: user=cc.openhome.UserConverter

    5、运行结果

    6、全局类型转换器

        假如输入页面变为如下:用户信息和客人信息要转换成User类型,生日参数要转换成Date类型。

     更新后的LoginAction.java

1: package cc.openhome;
2:
3: import java.util.Date;
4:
5: import com.opensymphony.xwork2.Action;
6: import com.opensymphony.xwork2.ActionSupport;
7: public class LoginAction extends ActionSupport implements Action {
8:   private User user;
9:   private String tip;
10:   private User customer;
11:   private Date birth;
12:   public User getCustomer() {
13:     return customer;
14:   }
15:   public void setCustomer(User customer) {
16:     this.customer = customer;
17:   }
18:   public Date getBirth() {
19:     return birth;
20:   }
21:   public void setBirth(Date birth) {
22:     this.birth = birth;
23:   }
24:   public User getUser() {
25:     return user;
26:   }
27:   public void setUser(User user) {
28:     this.user = user;
29:   }
30:   public String getTip() {
31:     return tip;
32:   }
33:   public void setTip(String tip) {
34:     this.tip = tip;
35:   }
36:   public String execute() throws Exception {
37:     // TODO Auto-generated method stub
38:     if(getUser().getName().equals("nihao") && getUser().getPass().equals("ni")){
39:       setTip("转换成功");
40:       return SUCCESS;
41:     }else{
42:       setTip("失败成功");
43:       return ERROR;
44:     }
45:   }
46: }

    7、提供全局转换器文件

    xwork-conversion.properties

1: cc.openhome.User=cc.openhome.UserConverter

    8、运行结果

        用户信息框输入scott,tiger ,客人信息输入框输入”abc,xyz”,在生日框中输入”2003-02-12”,则

当神已无能为力,那便是魔渡众生

转载地址:http://pfjta.baihongyu.com/

你可能感兴趣的文章
Codeforces 41D Pawn 简单dp
查看>>
Android,使用Json发送数据中,使用的Java转义字符 KanKan原创
查看>>
php分享二十八:mysql运行中的问题排查
查看>>
关于EventSource的精华
查看>>
.NET领域最为流行的IOC框架之一Autofac
查看>>
IntelliJ IDEA使用记录
查看>>
所谓完整的linux系统包括哪些部分呢?【转】
查看>>
Swift中出现“no such module cocoa”的错误
查看>>
开关电源过流保护-打嗝模式
查看>>
使用 jQuery Deferred 和 Promise 创建响应式应用程序
查看>>
EasyUI中那些不容易被发现的坑——EasyUI重复请求2次的问题
查看>>
nodejs教程
查看>>
NestIn VS插件 visual studio 中将同类CS文件放在一起显示
查看>>
iOS开发基础知识--碎片44
查看>>
ConcurrentHashMap原理分析
查看>>
Move to Another Changelist
查看>>
dede自定义表单增加添加时间怎么弄
查看>>
linux sort命令
查看>>
PHP- 深入PHP、Redis连接
查看>>
大数据分析神兽麒麟(Apache Kylin)
查看>>