Struts2:按钮中的方法属性不起作用

我在jsp中有一个表单。 有两个提交按钮:“搜索”和“添加新”按钮。 我已经为每个按钮设置了自己的方法属性。

      

在struts.xml中

         /error.jsp        /example/search.jsp /example/add.jsp    

在EmployeeAction类中

 public class EmployeeAction extends ActionSupport { private static final Logger logger = Logger.getLogger(EmployeeAction.class); @Override public String execute() throws Exception { logger.info("Calling execute!"); return SUCCESS; } public String doSearch() throws Exception { logger.info("Calling doSearch!"); return "search"; } public String doAddNew() throws Exception { logger.info("Calling doAddNew!"); return "add"; } } 

问题是,当我单击“搜索”“添加新”按钮时,方法doSearch()doAddNew()从未被调用,而是调用方法execute() 。 上面的代码出了什么问题?

我正在使用struts v2.3。

  

  

另一种方法是为同一个Action定义多个映射,例如

在JSP中:

   

在Struts.xml中

  /example/search.jsp   /example/add.jsp  

第三种方法是使用通配符映射 。

PS:如果你选择第二个,我建议,作为一种最佳实践,为你必须执行的每个逻辑操作使用一个Action …

如果您的操作“search”和“addNew”都加载/管理了公共数据,那么您可以定义employeeBaseAction,由employeeSearchAction和employeeAddNewAction扩展。


编辑

现在是2014年,并且DMI使用率一致被劝阻 (今天比以往任何时候都多),除了相当无用之外,所以我强烈建议你使用解决方案n.2。