是否为struts 2 action类提供了可以在该action类的每个方法之前调用的init方法?
例如,我有一个struts 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()
的struts操作时,我希望首先执行init()
方法。我们可以通过从两个函数调用它来运行它。
但struts 2中是否有任何规定会在每次调用时自动运行init方法,或者struts 2为action clases提供任何此类方法?
如果有人知道,请告诉我。
感谢。
答案 0 :(得分:8)
答案 1 :(得分:7)
是的,有:
首先,您的操作类必须实现Preparable interface。然后,您的操作必须实现Preparable.prepare()方法。 Struts 2每次调用你的action方法之前都会执行prepare()。
干杯。
答案 2 :(得分:1)
准备拦截器是可行的方法。如果您的操作使用默认拦截器堆栈,只需将您的init()
方法重命名为 prepare()
。
如果您的操作类有多个操作方法(如createEmployee()或deleteEmployee()),您可以使用名为prepare<*ActionMethodName*>()
的方法对具体方法进行特定准备(例如 prepareDeleteEmployee()
)。
答案 3 :(得分:0)