• ModelDriven & Preparable 接口


    一、 Preparable接口

    1.有prepare()方法,实现该接口的action在执行时,首先执行该方法,用于进行一些预处理。
    2.创建prepareXXX方法,则在执行XXX方法前,将先执行prepareXXX方法.

    二、ModelDriven接口

    1.该接口实现将T类中的属性展现到action中,action中不再需要针对T类,写set,get方法
    2.注意preparable与modeldriven执行顺序,必须保证getmodel在prepare之前调用。

    实现了ModelDriven就必须实现getModel这个方法,该方法返回的是你的ModelDrivern泛型中设定的实体类(就是父类抽出来的公共方法中的泛型)。

    其实是为了实现代码的重用,不要再定义一次你在数据访问层定义的属性了,直接用那个类就行了。

    三、执行顺序:

    prepare->prepareInput->input->getModel.

    参照下面例子:

    假设请求为:http://127.0.0.1:8080/employee_input.action

    且我们的类结构如下:

    BaseAction.java

    public class BaseAction extends ActionSupport {
    
    }

    CRUDAction.java

    import com.opensymphony.xwork2.ModelDriven;
    import com.opensymphony.xwork2.Preparable;

    public
    abstract class CRUDAction<T> extends BaseAction implements ModelDriven<T>, Preparable { // 具体的CRUD方法抽取 CRUD Method; // 保证执行input方法时执行下面规定的prepareInput():因为方法名对应二次参数绑定拦截器 public abstract void prepareInput() throws Exception; @Override public void prepare() throws Exception { // 留空 } }

    具体实现EmployeeAction.java

    public class EmployeeAction extends CRUDAction<Employee> {
        // 具体的实现CRUD , 如excute(){};save(){};delete(){};等等
        CRUD Method;
    
        public String input() {
        }
    
        @Override
        public void prepareInput() throws Exception {
        // 省略其他设置 
        // 设置查询,回显数据,在更新方法中中解决属性丢失问题
        }
    
        @Override
        /** 驱动模型 */
        public Employee getModel() {
            return employee;
        }
        //省略其他设置
    }

    顺序:

    1 . CRUDaction-------prepare()

    2 . EmployeeAction---prepareInput()

    3 . EmployeeAction---input()

    4 . EmployeeAction---getModel()

    一介书生,敲敲键盘而已。
  • 相关阅读:
    TCP/IP、Http、Socket的区别
    MQTT协议运用总结
    求递归算法时间复杂度:递归树
    大数乘法的几种算法分析及比较(2014腾讯南京笔试题)
    3.9重建二叉树(各种方案的分析比较及扩展问题的分析)
    3.10分层遍历二叉树-扩展问题
    青春何其美好,未来的日子里希望有你
    补充招银面经 19日面的,今天28日(昨晚发的offer)
    千里送人头---厦门美团一面挂
    滴滴一面挂
  • 原文地址:https://www.cnblogs.com/applerosa/p/5944537.html
Copyright © 2020-2023  润新知