Struts2中的自动匹配小知识
2016-03-25 01:34
447 查看
非对象类型可以不用写getter()只有setter()方法。
对象类型一定要写getter()方法和setter()方法否则会出现传值错误。
案例:
struts.xml:
login.jsp:
Action:
页面输入:
id: 111333
pw: 123
age: 123
控制台:
当把属性放入一个对象中,对对象进行探究。
Action:
User.Java:
login.jsp:
页面输入:
id: 111333
pw: 123
age: 123
控制台结果:
在Action中增加一个getter()方法之后:
页面输入:
id: 111333
pw: 123
age: 123
控制台结果:
所以,在对象级中getter和setter方法都要有。Action中的属性可以不加getter方法。
细节注意:
在Action中的User对象千万不能是User user = new User()。因为params拦截器在传参过程中构造并且传参。所以不能在里面构造。
login.jsp中,如果Action中对象级取数据,则login.jsp中的input[name]应该变为input[对象.属性]方式,即name=”user.age”这种。否则,在页面输入值,struts会报错,同时控制台只能得到:
所以,小心!仔细!认真!
对象类型一定要写getter()方法和setter()方法否则会出现传值错误。
案例:
struts.xml:
<package name="convert" extends="struts-default" namespace="/"> <action class="com.stu.UserAction" name="Login" method="Login"> <result name="success">/success.jsp</result> </action> </package>
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="Login" method="post"> 用户名:<input type="text" name="id" /><br/> 密码:<input type="text" name="pw" /><br/> 年龄:<input type="text" name="age" /><br/> <input type="submit" value="提交"/> </form> <br> </body> </html>
Action:
package com.stu; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private String id; private String pw; private int age; public void setId(String id) { this.id = id; } public void setPw(String pw) { this.pw = pw; } public void setAge(int age) { this.age = age; } public String Login(){ System.out.println("In login: "); System.out.println("id: "+id); System.out.println("pw: "+pw); System.out.println("age: "+age); return SUCCESS; } }
页面输入:
id: 111333
pw: 123
age: 123
控制台:
In login: id: 111333 pw: 123 age: 123
当把属性放入一个对象中,对对象进行探究。
Action:
package com.stu; import java.util.Date; import com.opensymphony.xwork2.ActionSupport; public class UserAction extends ActionSupport { private User user; public void setUser(User user) { this.user = user; } public String Login(){ System.out.println("In login: "); System.out.println("id: "+user.getId()); System.out.println("pw: "+user.getPw()); System.out.println("age: "+user.getPw()); return SUCCESS; } }
User.Java:
package com.stu; public class User { private String id; private String pw; private int age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getPw() { return pw; } public void setPw(String pw) { this.pw = pw; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <form action="Login" method="post"> 用户名:<input type="text" name="user.id" /><br/> 密码:<input type="text" name="user.pw" /><br/> 年龄:<input type="text" name="user.age" /><br/> <input type="submit" value="提交"/> </form> <br> </body> </html>
页面输入:
id: 111333
pw: 123
age: 123
控制台结果:
In login: id: null pw: 123 age: 123
在Action中增加一个getter()方法之后:
页面输入:
id: 111333
pw: 123
age: 123
控制台结果:
In login: id: 111333 pw: 123 age: 123
所以,在对象级中getter和setter方法都要有。Action中的属性可以不加getter方法。
细节注意:
在Action中的User对象千万不能是User user = new User()。因为params拦截器在传参过程中构造并且传参。所以不能在里面构造。
login.jsp中,如果Action中对象级取数据,则login.jsp中的input[name]应该变为input[对象.属性]方式,即name=”user.age”这种。否则,在页面输入值,struts会报错,同时控制台只能得到:
In login:
所以,小心!仔细!认真!
相关文章推荐
- 我是运营,我没有假期
- JQuery+Strusts1.x无刷新登录
- 在线用表单建立文件夹
- DB2数据库的安装
- C#实现把指定数据写入串口
- “传奇”图象数据存储方式
- Jquery 表单取值赋值的一些基本操作
- 修复mysql数据库
- 浅析SQL数据操作语句
- SQLServer 数据导入导出的几种方法小结
- 简述MySQL分片中快速数据迁移
- MySQL数据备份之mysqldump的使用详解
- C#实现窗体间传递数据实例
- C#中的委托数据类型简介
- 给你的数据库文件减肥
- Oracle数据更改后出错的解决方法
- Oracle数据库数据丢失恢复的几种方法总结
- javascript 表单的友好用户体现
- js 提交和设置表单的值
- C#将Sql数据保存到Excel文件中的方法