Struts模型驱动

来源:互联网 发布:皇帝岛 珊瑚岛 pp 知乎 编辑:程序博客网 时间:2024/05/22 06:14

Struts运行时候,会执行默认的拦截器栈,其中有一个拦截器,模型驱动拦截器:

<interceptor

name="modelDriven"class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>

源代码:

@Override

    public String intercept(ActionInvocationinvocation)throws Exception {

        Object action = invocation.getAction();

 

        if (actioninstanceof ModelDriven) {

            ModelDriven modelDriven =(ModelDriven) action;

            ValueStack stack =invocation.getStack();

            Object model =modelDriven.getModel();

            if (model != null) {

               stack.push(model);

            }

            if (refreshModelBeforeResult) {

               invocation.addPreResultListener(new RefreshModelBeforeResult(modelDriven,model));

            }

        }

        return invocation.invoke();

    }

-------------------------------------------------------------------------------------------------------------


Struts中获取域中的值有以下几种方法:其中模型驱动最为简单方便

prams拦截器,可以把请求数据自动填充的action的属性中

举例1:

JSP

  <input type=text name=userName />

  <input type=text name=pwd />

 

Action

   class UserAction{

       // 封装请求数据

       private String userName;

       private String pwd;

       //.. set方法

    }

 

举例2:

JSP

  <input type=text name=user.userName />

  <input type=text name=user.pwd />

 

Action

   class UserAction{

       // 封装请求数据

       private User user;

 

       ..

    }

 

举例3:(模型驱动)

JSP

  <input type=text name=userName />

  <input type=text name=pwd />

 

Action

   class UserAction{

       // 封装请求数据

       private User user;

 

       ..

    }

使用步骤:

           1.实现ModelDriver接口

           2.实现接口方法: 接口方法返回的就是要封装的对象

           3.对象一定要实例化。

/**

 * 1. 数据回显

 * 2. 模型驱动

 * @author Jie.Yuan

 *

 */

publicclassUserAction extends ActionSupportimplements ModelDriven<User> {

   

    //封装请求数据

    private User user = new User();

    publicvoid setUser(User user) {

        this.user = user;

    }

    public User getUser() {

        return user;

    }

   

    // 实现模型驱动接口方法

    @Override

    public User getModel() {

        return user;

    }

   

   

    public String add() {

        //测试:使用了模型驱动,是否数据正常?Ok

        System.out.println(user);

        return"success";

    }
原创粉丝点击