Struts2之OGNL类型转换
2016-02-22 23:30
405 查看
OGNL表达式允许开发者无须任何特殊处理,只需要在定义表单域时使用OGNL表达式来定义表单域的name属性。这个时候的表单域的name的属性不是一般的值。例如,定义个User的对象,那么表单域中namer 属性可能是name.name和name.pass形式,这种就是OGNL的表达式。
2) input.jsp
2) JSP界面
2) JSP界面
3) 获取方法
1.普通例子
1) 定义:LoginAction.javapublic class LoginAction extends ActionSupport { // 使用User类型的成员变量封装请求参数 private User user; private String tip; // user的setter和getter方法 public void setUser(User user) { this.user = user; } public User getUser() { return this.user; } public String execute() throws Exception { // 通过user的name属性和pass属性来判断控制逻辑 if (getUser().getName().equals("owen") && getUser().getPass().equals("owen") ) { addActionMessage("登录成功"); return SUCCESS; } addActionMessage("登录失败!!"); return ERROR; } }
2) input.jsp
<body> <h3>利用OGNL的进行类型转换</h3> <s:form action="login"> <!-- 该表单域封装的请求参数名为user.name --> <s:textfield name="user.name" label="用户名"/> <!-- 该表单域封装的请求参数名为user.pass --> <s:textfield name="user.pass" label="密码"/> <tr> <td colspan="2"><s:submit value="转换" theme="simple"/> <s:reset value="重填" theme="simple"/></td> </tr> </s:form> </body>
2. MAP的例子
1) LoginAction.javapublic class LoginAction extends ActionSupport { // Action类里包含一个Map类型的成员变量 // Map的value类型为User类型 private Map<String , User> users; // users的setter和getter方法 public void setUsers(Map<String , User> users) { this.users = users; } public Map<String , User> getUsers() { return this.users; } public String execute() throws Exception { // 在控制台输出Struts 2封装产生的Map对象 System.out.println(getUsers()); // 根据Map集合中key为one的User实例来决定控制逻辑 if (getUsers().get("one").getName().equals("owen") && getUsers().get("one").getPass().equals("owen") ) { addActionMessage("登录成功!"); return SUCCESS; } addActionMessage("登录失败!!"); return ERROR; } }
2) JSP界面
<body> <h3>直接封装成Map</h3> <s:form action="login"> <s:textfield name="users['one'].name" label="第one个用户名"/> <s:textfield name="users['one'].pass" label="第one个密码"/> <s:textfield name="users['two'].name" label="第two个用户名"/> <s:textfield name="users['two'].pass" label="第two个密码"/> <tr> <td colspan="2"><s:submit value="转换" theme="simple"/> <s:reset value="重填" theme="simple"/></td> </tr> </s:form> </body>
3. List的例子
1) LoginAction.javapublic class LoginAction extends ActionSupport { // Action类里包含一个List类型的成员变量 // List集合的元素为User类型 private List<User> users; // users属性的setter和getter方法 public void setUsers(List<User> users) { this.users = users; } public List<User> getUsers() { return this.users; } public String execute() throws Exception { // 在控制台输出Struts 2封装产生的List对象 System.out.println(getUsers()); // users属性的第一个User实例来决定控制逻辑 if (getUsers().get(0).getName().equals("owen") && getUsers().get(0).getPass().equals("owen") ) { addActionMessage("登录成功!"); return SUCCESS; } addActionMessage("登录失败!!"); return ERROR; } }
2) JSP界面
<body> <h3>直接封装成List</h3> <s:form action="login"> <s:textfield name="users[0].name" label="第一个用户名"/> <s:textfield name="users[0].pass" label="第一个密码"/> <s:textfield name="users[1].name" label="第二个用户名"/> <s:textfield name="users[1].pass" label="第二个密码"/> <tr> <td colspan="2"><s:submit value="转换" theme="simple"/> <s:reset value="重填" theme="simple"/></td> </tr> </s:form> </body>
3) 获取方法
<body> <s:actionmessage/> 第一个User实例的用户名为:<s:property value="users[0].name"/><br/> 第一个User实例的密码为:<s:property value="users[0].pass"/><br/> 第二个User实例的用户名为:<s:property value="users[1].name"/><br/> 第二个User实例的密码为:<s:property value="users[1].pass"/><br/> </body>
相关文章推荐
- [转]Spring——jar包详解
- 在监听器中注入spring bean
- 一个springmvc请求静态资源的问题
- myeclipse初始化编码格式(全部)
- 基于Weblogic 开发 JavaEE 需要的wlfullclient.jar的制作方法
- 深入理解Java的接口和抽象类
- Java中的变量
- 【转】JAVA之动态代理
- Eclipse常用快捷键总结
- 【基础技术】Java基础那些事儿系列-成员变量与局部变量
- spring类型自动转换——@InitBinder和Converter
- Leetcode旅途一
- java多线程-Condition
- spring mvc的服务器端图形验证码
- 【JAVA】17、数组应用范例
- 从头认识Spring-3.6 简单的AOP日志实现(注解版)-需要记录方法的运行时间
- Java设计模式——代理模式
- Java基础学习12_Java中的字符串
- 【java基础】初始化
- 从头认识Spring-3.5 简单的AOP日志实现(注解版)-某方法之前的前后记录日志