6.Action类接收参数(属性驱动)
. 所谓属性驱动就是把要接收的参数声明为Action类的成员变量(要和参数一一对应),并添加get,set方法就可接收到参数;
. Action类本身也可以是javaBean
. struts2通过内省机制操作javaBean,并实现封装转发,所以可在结果页上直接从request中获取
1)在Action类中声明的成员变量是基本类型
(但这样Action就成为了javaBean,将javabean和控制代码写在了一起,不复合MVC的规范)
public class UserAction { private String nm; private String pwd; private Integer age; // private String[] hobbies; private List<String> hobbies; public String getUsername() {//获取信息时是调用的getXxxx方法 return nm; } public void setName(String name) {//设置信息时是调用的setXxxx方法 this.nm = name; } public List<String> getHobbies() { return hobbies; } public void setHobbies(List<String> hobbies) { this.hobbies = hobbies; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String execute(){ System.err.println("Name:"+nm+":pwd:"+pwd+":age:"+age); System.err.println("size:"+hobbies.size()); for(String ss:hobbies){ System.err.println("爱好是:"+ss); } return "success"; } }
2)在Action类中声明的成员变量不是基本类型,而是javaBean;
(这样做符合MVC原则,但是对应的参数的参数名也必须改成如 user.name的形式)
public class UserBeanAction {//Controller private User user;//JavaBean public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String execute(){ System.err.println("用户信息是:"+this.user); return "success"; } }
//示例:表单name属性也必须user.name形式;
<form name="s" action="<c:url value='/user2.action'/>" method="post"> Name:<input type="text" name="user.name"/><br/> powd:<input type="text" name="user.pwd"/><br/> age:<input type="text" name="user.age"/><br/> <fieldset> <legend>爱好</legend> <input type="checkbox" name="user.hobbies" value="game">游戏
<input type="checkbox" name="user.hobbies" value="football">足球 <input type="checkbox" name="user.hobbies" value="TV">看电视 </fieldset> <input type="submit"/> </form>