Struts2基于OGNL的类型转换
来源:互联网 发布:windows 10怎么调声音 编辑:程序博客网 时间:2024/05/29 17:02
Struts2内建的类型转换器可以完成基本的类型、Date与字符串之间的转换,这些都是简单的类型之间的转换。除此之外,由于Struts2内建的OGNL表达式支持,因此在Struts2中甚至可以直接将字符串参数转换成符合参数类型。
前台表单:
<body> <form action="regist" method="post"> <table> <caption> <h3>请输入用户注册信息</h3> </caption> <tr> <td>用户名:<input type="text" name="user.name" /></td> </tr> <tr> <td>密码:<input type="password" name="user.pass" /></td> </tr> <tr> <td>年龄:<input type="text" name="user.age" /></td> </tr> <tr> <td>生日:<input type="text" name="user.birth" /></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="注册" /> </td> </tr> </table> </form></body>
表单中的name属性就是OGNL表达式,Struts2会将user.name自动给Action user的name属性赋值。
使用Struts2这种转换时需要注意
1、struts2需要直接创建一个符合类(User类)的实例,因此系统必须保证该复合类有无参数的构造器
2、如果想使用user.name请求参数的形式为Action实例的user属性的name属性赋值,就必须为user属性对应的复合类(User类)提供setName()方法,Struts2是通过调用该方法来为该属性赋值的。当然Action类中还应该包含setUser()方法。
如下创建user所对应的User类
import java.util.Date;public class User { //值对象用于封装请求参数的4个属性 private String name; private String pass; private int age; private Date birth; //无参构造函数 public User(){ } //初始化全部属性的构造器 public User(String name, String pass, int age, Date birth) { this.name = name; this.pass = pass; this.age = age; this.birth = birth; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getBirth() { return birth; } public void setBirth(Date birth) { this.birth = birth; }}
Struts2会通过相应的方法将user.name向Action user的name属性赋值
Action类
import com.opensymphony.xwork2.Action;import com.test.dao.User;public class RegistAction implements Action{ //User类型属性封装请求参数 private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute() throws Exception { return SUCCESS; } }
<body><h1>您的注册信息如下</h1>用户名:<s:property value="user.name"/><br/>密码:<s:property value="user.pass"/><br/>年龄:<s:property value="user.age"/><br/>生日:<s:property value="user.birth"/></body>
使用OGNL转换成Map集合
前台登录页面(为了演示实现,界面可能不符合常规)
<body> <form action="regist" method="post"> <table> <caption> <h3>用户登录</h3> </caption> <tr> <td>第一个用户:<input type="text" name="users['one'].name" /></td> </tr> <tr> <td>第一个密码:<input type="password" name="users['one'].password" /></td> </tr> <tr> <td>第二个用户:<input type="text" name="users['two'].name" /></td> </tr> <tr> <td>第二个密码:<input type="password" name="users['two'].password" /></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="登录" /> </td> </tr> </table> </form></body>
public class User { private String name; private String password; public User() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
public class RegistAction implements Action{ //封装请求参数的Map对象 private Map<String,User> users; public Map<String, User> getUsers() { return users; } public void setUsers(Map<String, User> users) { this.users = users; } public String execute() throws Exception { if(getUsers().get("one").getName().equals("admin") &&getUsers().get("one").getPassword().equals("123456")){ return SUCCESS; }else{ return ERROR; } } }
结果页面代码:
<body><h1>您的注册信息如下</h1>key为one的用户名:<s:property value="users['one'].name"/><br/>key为one的密码:<s:property value="users['one'].password"/><br/>key为two的用户名:<s:property value="users['two'].name"/><br/>key为two的密码:<s:property value="users['two'].password"/></body>
结果
List与Map的处理基本一致:只是Map是“Action属性名['key值'] 属性名”而List是“Action属性名['索引值'] 属性名”。
list登录页面如下
<tr> <td>第一个用户:<input type="text" name="users['0'].name" /></td></tr>
阅读全文
0 0
- struts2 基于OGNL的类型转换
- Struts2中基于OGNL的类型转换
- 【Struts2】:基于OGNL的类型转换
- Struts2基于OGNL的类型转换
- Struts2的类型转换(1):基于ognl的类型转换
- 基于OGNL的类型转换
- Struts2内建的类型转换器和基于OGNL的类型转换
- struts2的OGNL和类型转换
- Struts 2.1:基于OGNL的类型转换
- Struts2之OGNL类型转换
- struts2 基于OGNL的几种日期转换
- Struts2——基于StrutsTypeConverter的类型转换
- 【Struts2】:Struts2的类型转换
- Struts2的类型转换
- struts2的类型转换
- struts2的类型转换
- Struts2的类型转换
- Struts2的类型转换
- WebDriver基础配置
- 东芝z20t笔记本怎样u盘启动详细图解
- struts拦截器执行流程
- Hadoop文件放置策略及数据倾斜的balance方法
- spring cloud 微服务框架 第六天
- Struts2基于OGNL的类型转换
- 学习CountDownLatch
- MPR121使用总结
- wpf 调用自己编写的。xml后缀文件的资源
- 解决 error: cannot find openssl s 问题
- 6月21日云栖精选夜读:国内首位!Node.js社区将阿里云工程师张秋怡吸纳为CTC成员
- spring cloud微服务框架 第七天
- Android 系统中 Location Service 的实现与架构
- 转载的spring cloud的全家桶,有空学习下