Action中接收参数的三种方法

1.  使用action的属性接收参数.(action中定义和参数名相同的属性,生成getter/setter方法,在相应的方法中可以直接使用属性,action中的属性和url中的参数名是一一对应的,不过需要注意一点.参数的名称,应该是和方法名相同,而不是属性名!)

2.  使用DoMainModel接收参数(action中定义实体类的引用,生成getter/setter方法,在传参数时,加上引用的方法名即可)

package com.test.actions;

 

import com.opensymphony.xwork2.ActionSupport;

import com.test.entitys.Users;

 

public class UserAction extends ActionSupport {

   

    //实体类对象

    public Users getUser() {

       return user;

    }

 

    public void setUser(Users user) {

       this.user = user;

    }

 

    private Users user;

   

   

    public String add() throws Exception{

       System.out.println("name="+user.getUserName());

       System.out.println("card="+user.getUserCard());

       return SUCCESS;

    }

   

    public String delete(){

       return SUCCESS;

    }

}

访问路径为:

Action中接收参数的三种方法 - 盡頭 - 深山憨娃

后台输出结果:

name="123"

card=222

 

 

3.  使用ModelDriven传递参数(action中实现ModelDriven接口。注意,此时action中的实体对象就需要自己new出来了,在访问路径上,就不再需要user.userName,直接userName就行了)

 

看它的源码:

/*

 * Copyright (c) 2002-2007 by OpenSymphony

 * All rights reserved.

 */

package com.opensymphony.xwork2;

 

 

/**

 * ModelDriven Actions provide a model object to be pushed onto the ValueStack

 * in addition to the Action itself, allowing a FormBean type approach like Struts.

 *

 * @author Jason Carreira

 */

public interface ModelDriven<T> {

 

    /**

     * Gets the model to be pushed onto the ValueStack instead of the Action itself.

     *

     * @return the model

     */

    T getModel();

 

}

 

只有一个泛型的getModel方法。所以只需要实现这个方法,返回一个实体对象就行。访问路径,和使用action的属性访问一样。第二种使用的最多,但是个人比较喜欢第三种.