程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> ModelDriven & Preparable 接口,struts2modeldriven

ModelDriven & Preparable 接口,struts2modeldriven

編輯:JAVA綜合教程

ModelDriven & Preparable 接口,struts2modeldriven


 

一、 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

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()

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved