Struts 2.1:基于OGNL的类型转换

来源:互联网 发布:linux 没有tar命令 编辑:程序博客网 时间:2024/06/16 07:49
 

Struts 2内建的OGNL表达式的支持,因此在Struts 2中甚至可以直接将字符串参数转换成符合类型。

使用MAP实例

lee\LoginAction.java

package lee;import com.opensymphony.xwork2.Action;import java.util.Map;public class LoginAction implements Action{//User类型属性封装请求参数 private Map<String ,User> users;private String tip;//user属性的setter和getter方法public void setUsers(Map<String ,User> users) {this.users = users; }public Map<String ,User> getUsers() {return (this.users); }//tip属性的setter和getter方法public void setTip(String tip) {this.tip = tip; }public String getTip() {return (this.tip); }//处理用户请求的execute方法public String execute() throws Exception{//通过user属性的name属性和pass属性来决定转向if (getUsers().get("one").getName().equals("crazyit")&& getUsers().get("one").getPass().equals("leegang")){setTip("转换成功");return SUCCESS;}else{setTip("转换失败");return ERROR;}}}

lee\User.java

 

package lee;public class User{//两个普通属性private String name;private String pass;//无参数的构造器public User(){}//初始化全部属性的构造器public User(String name , String pass){this.name = name;this.pass = pass;}//name属性的setter和getter方法public void setName(String name){this.name = name;}public String getName(){return this.name;}//pass属性的setter和getter方法public void setPass(String pass){this.pass = pass;}public String getPass(){return this.pass;}}

\input.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>直接封装成Map</title></head><body><form action="login.action" method="post"><table align="center" width="360"><caption><h3>直接封装成对象Map</h3></caption><tr><td>第一个用户名:<input type="text" name="users['one'].name"/></td></tr><tr><td>第一个密码:<input type="text" name="users['one'].pass"/></td></tr><tr><td>第二个用户名:<input type="text" name="users['two'].name"/></td></tr><tr><td>第二个密码:<input type="text" name="users['two'].pass"/></td></tr><tr align="center"><td><input type="submit" value="转换"/><input type="reset" value="重填" /></td></tr></table></form></body></html>

类似的,如果我们要访问Action的Map类型的属性,也可以使用OGNL表达式:

<body>转换成功!<br />key为one的用户名为:<s:property value="users['one'].name"/><br />key为one的密码为:<s:property value="users['one'].pass"/><br />key为two的用户名为:<s:property value="users['two'].name"/><br />key为two的密码为:<s:property value="users['two'].pass"/><br /></body>


如果把LoginAction中的users属性改为List<String>,一样可以利用OGNL表达式:

<form action="login.action" method="post"><table align="center" width="360"><caption><h3>直接封装成对象 List</h3></caption><tr><td>第一个用户名:<input type="text" name="users[0].name"/></td></tr><tr><td>第一个密码:<input type="text" name="users[0].pass"/></td></tr><tr><td>第二个用户名:<input type="text" name="users[1].name"/></td></tr><tr><td>第二个密码:<input type="text" name="users[1].pass"/></td></tr><tr align="center"><td><input type="submit" value="转换"/><input type="reset" value="重填" /></td></tr></table></form>



 

原创粉丝点击