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>

 

posted @ 2013-02-13 17:34  一灵  阅读(231)  评论(0编辑  收藏  举报