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。
- 使用FutureTask而不是Callable有什么好处?
- 如何使用Open nlp的分块解析器提取名词短语
- 在Java应用程序中打开和返回数据库连接的最佳方法?
- Hql,如何在具有一对多关系的表之间编写连接查询?
- javax.persistence.transient和java.bean.transient做同样的事情吗?
- 如何在OSGi包中使用Spring bean?
- 带有@Transactional注释的Spring OpenSessionInViewFilter
- JVisualVM可以“堆转储”按钮释放内存吗?
- Java允许将字节分配给java.lang.Short,但不允许分配给java.lang.Integer