Существует ли какой-либо метод init для класса действий struts2? - PullRequest
8 голосов
/ 29 мая 2009

Существует ли какой-либо метод init для класса действий Struts 2, который можно вызывать перед каждым методом этого класса действий?

Например, у меня есть класс действия для распорок 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";
       }
}

Теперь в приведенном выше коде, когда вызывается действие Struts для getAllEmployees() и deleteEmplyee(), я хочу, чтобы метод init() выполнялся первым. Мы можем запустить его, вызвав его из обеих функций.

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

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

Спасибо.

Ответы [ 4 ]

8 голосов
/ 29 мая 2009

Посмотрите на готовый интерфейс и перехватчик Prepare .

7 голосов
/ 03 июня 2009

Да, есть:

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

Приветствие.

1 голос
/ 29 мая 2009

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

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

0 голосов
/ 11 января 2012

Да

init() 

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

Смотрите это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...