2009-05-29 9 views
7

Gibt es eine Init-Methode für die Aktionsklasse struts2, die vor jeder Methode dieser Aktionsklasse aufgerufen werden kann?Gibt es eine Init-Methode für die Aktionsklasse struts2?

Zum Beispiel habe ich eine Aktionsklasse für Streben 2 wie unten angegeben

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"; 
     } 
} 

nun in obigem Code, wenn Streben Aktion für getAllEmployees() und deleteEmplyee() aufgerufen wird Ich will init() Methode auszuführen zuerst. Wir können es ausführen, indem wir es von beiden Funktionen aufrufen.

Aber gibt es eine Bestimmung in Struts 2, die init-Methode automatisch bei jedem Aufruf oder Struts 2 bietet eine solche Methode für Aktionsklassen?

Bitte sagen Sie mir, wenn jemand weiß.

Danke.

Antwort

6

Ja, es gibt:

Zu allererst Ihre Action-Klasse des herstellbaren Schnittstelle implementieren muß. Dann muss Ihre Aktion die Preparable.prepare() -Methode implementieren. Strut 2 führt prepare() jedes Mal aus, bevor es Ihre Aktionsmethode aufruft.

Prost.

1

vorbereiten Interceptor Weg zu gehen ist. Wenn Ihre Aktion den Standard-Interceptor-Stack verwendet, benennen Sie einfach Ihre init()-Methode in prepare() um.

Wenn Ihre Aktionsklasse mehr Aktionsmethoden (wie createEmployee() oder deleteEmployee()) hat, können Sie gezielte Vorbereitung auf konkrete Verfahren mit Verfahren tun prepare<*ActionMethodName*>() genannt (zB prepareDeleteEmployee()).

+0

Danke rdk. Es ist sehr hilfreiche Informationen. – amar4kintu

0

Ja

init() 

aufgerufen, nachdem ein Abfangjäger erstellt wird, aber bevor irgendwelche Anfragen verarbeitet Intercept verwenden, die Interceptor eine Chance zu geben, alle erforderlichen Ressourcen zu initialisieren.

See this

Verwandte Themen