java – Struts2:按钮中的方法属性不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Struts2:按钮中的方法属性不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2807字,纯文字阅读大概需要5分钟。
内容图文
![java – Struts2:按钮中的方法属性不起作用](/upload/InfoBanner/zyjiaocheng/709/9a6d8e5e3e984c8d9459c919e27c336c.jpg)
我在jsp中有一个表单.有两个提交按钮:“搜索”和“添加新”按钮.我已经为每个按钮设置了自己的方法属性.
<s:form name="searchForm" action="employeeAction" method="post">
<s:textfield name="id" label="Employee ID"/>
<s:textfield name="name" label="Employee Name"/>
<s:submit value="Search" method="doSearch"/>
<s:submit value="Add New" method="doAddNew"/>
</s:form>
在struts.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
</package>
<package name="example" namespace="/example" extends="default">
<action name="employeeAction" class="example.EmployeeAction">
<result name="search">/example/search.jsp</result>
<result name="add">/example/add.jsp</result>
</action>
</package>
</struts>
在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.
解决方法:
组
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
至
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
另一种方法是为同一个Action定义多个映射,例如
在JSP中:
<s:submit value="Search" action="employeeSearchAction" />
<s:submit value="Add New" action="employeeAddNewAction"/>
在Struts.xml中
<action name="employeeSearchAction" class="example.EmployeeAction" method="doSearch">
<result>/example/search.jsp</result>
</action>
<action name="employeeAddNewAction" class="example.EmployeeAction" method="doAddNew">
<result>/example/add.jsp</result>
</action>
第三种方法是使用Wildcard Mappings.
P.S:如果你选择第二个,我建议,作为一种最佳实践,使用一个Action来执行你必须执行的每个逻辑操作……
如果您的操作,“搜索”和“添加新”都加载/管理了公共数据,
然后你可以定义一个employeeBaseAction,由employeeSearchAction和employeeAddNewAction扩展.
编辑
现在是2014年,DMI的使用受到了一致的劝阻(今天比以往任何时候都多),除了相当无用之外,所以我强烈建议你使用解决方案n.2.
内容总结
以上是互联网集市为您收集整理的java – Struts2:按钮中的方法属性不起作用全部内容,希望文章能够帮你解决java – Struts2:按钮中的方法属性不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。