2009-05-29 74 views
7

是否有任何爲struts2操作類提供的init方法,可以在該操作類的每個方法之前調用?是否有任何給struts2動作類的init方法?

例如,我有支柱2的操作類下面

import com.opensymphony.xwork2.ActionSupport; 

public class EmployeeAction extends ActionSupport{ 

    private DepartmentDaoService deptService = new DepartmentDaoService() ; 
    private EmployeeDaoService empService = new EmployeeDaoService(); 
    private Employee employee; 
    private List<Employee> employees; 
    private List<Department> departments; 

     public void init() 
     { 
      //Do initialization stuff here 
     } 
     public String getAllEmployees(){ 
      employees = empService.getAllEmployees(); 
      return "success"; 
     } 

     public String deleteEmployee(){ 
     empService.deleteEmployee(employee.getEmployeeId()); 
     return "success"; 
     } 
} 

現在,在上面的代碼中給出當用於getAllEmployees撐杆動作()和deleteEmplyee()被調用我想init()方法來執行第一。我們可以通過從兩個函數中調用它來運行它。

但是,在struts 2中是否有任何規定會在每次調用時自動運行init方法,或者struts 2爲動作類提供任何此類方法?

請告訴我,如果有人知道。

謝謝。

回答

6

是的,有:

首先,你的動作類必須實現製備的接口。然後,您的操作必須實現Preparable.prepare()方法。 Strut 2會在調用你的動作方法之前每次執行prepare()。

乾杯。

1

準備攔截的路要走。如果您的操作使用默認攔截器堆棧,請將您的init()方法重命名爲prepare()

如果你的動作類有多個動作方法(如在CreateEmployee()或deleteEmployee())可以用於名爲prepare<*ActionMethodName*>()方法,具體的方法(例如prepareDeleteEmployee())做具體的準備。

+0

謝謝rdk。 這是非常有用的信息。 – amar4kintu 2009-05-30 04:39:31

0

init() 

創建一個攔截器後調用,但任何請求都使用攔截處理之前,給攔截機會初始化任何所需要的資源。

See this