2009-05-29 3 views
7

Есть ли какой-либо метод init для класса действия struts2, который можно вызвать перед каждым методом этого класса действий?Есть ли какой-либо метод init для класса action struts2?

К примеру, у меня есть класс действия для распорок 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() называется я хочу инициализации() метод, чтобы выполнить первый. Мы можем запустить его, вызвав его из обеих функций.

Но есть ли какое-либо положение в строках 2, которое автоматически запускает метод инициализации при каждом вызове, или struts 2 предоставляет любой такой метод для кластеров действий?

Скажите, пожалуйста, если кто-нибудь знает.

Спасибо.

ответ

6

Да есть:

Прежде всего, ваш класс действия должен реализовывать интерфейс получаютса. Затем ваше действие должно реализовать метод Подготовительный.prepare(). Strut 2 будет выполнять prepare() каждый раз, прежде чем он вызовет ваш метод действий.

Cheers.

1

Подготовка перехватчик путь. Если ваше действие использует стек перехватчиков по умолчанию, переименуйте свой метод init() в prepare().

Если ваш класс действия имеет несколько методов действий (например, CreateEmployee() или deleteEmployee()) вы можете сделать специальную подготовку для конкретного метода с методом именем prepare<*ActionMethodName*>() (например prepareDeleteEmployee()).

+0

Thanks rdk. Очень полезная информация. – amar4kintu

0

Да

init() 

Вызывается после создания перехватчика, но прежде, чем любые запросы обрабатываются с помощью перехвата, давая перехватчик возможность инициализировать все необходимые ресурсы.

See this

 Смежные вопросы

  • Нет связанных вопросов^_^