2009-05-29 8 views
7

¿Hay algún método init proporcionado para la clase de acción struts2 al que se pueda llamar antes de cada método de esa clase de acción?¿Hay algún método init dado para la clase de acción struts2?

Por ejemplo, tengo una clase de acción para puntales 2 como se indica a continuación

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

Ahora en el código de seguridad cuando la acción puntales para getAllEmployees() y deleteEmplyee() se llama Quiero método init() para ejecutar primero. Podemos ejecutarlo llamándolo desde ambas funciones.

Pero, ¿existe alguna disposición en los puntales 2 que ejecute automáticamente el método init en cada llamada o struts 2 proporciona dicho método para las clases de acción?

Por favor dígame si alguien sabe.

Gracias.

Respuesta

6

Si se encuentra:

En primer lugar, la clase acción debe implementar la interfaz que se puede preparar. Luego, tu acción debe implementar el método Preparable.prepare(). Strut 2 ejecutará prepare() cada vez antes de invocar su método de acción.

Saludos.

1

Prepare Interceptor es camino a seguir. Si su acción utiliza la pila de interceptor predeterminada simplemente cambie el nombre de su método init() al prepare().

Si la clase acción tiene múltiples métodos de acción (como createEmployee() o deleteEmployee()) se puede hacer una preparación específica para el método concreto con el método llamado prepare<*ActionMethodName*>() (por ejemplo prepareDeleteEmployee()).

+0

Gracias RDK. Es información muy útil. – amar4kintu

0

init() 

llama una vez que se crea un interceptor, pero antes de que todas las peticiones son procesadas usando intercepción, dando al Interceptor la oportunidad de inicializar los recursos necesarios.

See this

Cuestiones relacionadas