Struts2:多个提交按钮

Posted

技术标签:

【中文标题】Struts2:多个提交按钮【英文标题】:Struts2: multiple submit button 【发布时间】:2014-03-03 06:43:08 【问题描述】:

我想在我的 jsp 中有 2 个提交按钮,所以我找到了这个教程:http://struts.apache.org/release/2.3.x/docs/multiple-submit-buttons.html 我想用 MyBaseAction 类开发 Nyong Nyong 的解决方案,由 MySubmitAction 和 MyClearAction 类扩展。但我无法让它工作。 我不确定 jsp 会怎样,示例中是这样的:

<s:form method="post" action="mySubmitAction">
    <s:submit value="Submit"/>
    <s:submit value="Clear" action="myClearAction"/>
</form>

但我想它是指前面的例子。 我也不确定struts.xml,是否需要设置一些特定的常量值或其他东西?

如果有人能提供完整的 jsp 和 struts.xml 示例,那就太好了。

【问题讨论】:

【参考方案1】:

如果您在 较新 2.3.15.2 的版本中使用 struts,则必须将此常量添加到 struts.xml 以启用 action: 前缀:

<constant name="struts.mapper.action.prefix.enabled" value="true" />

因为它已默认禁用。

阅读更多安全公告S2-018

【讨论】:

我输了一天,你是我的英雄! :D【参考方案2】:

您需要将动作的“名称”映射到您创建的实际动作类。如果您遵循示例并拥有类似以下的 struts.xml 文件:

<action name="mySubmitAction" class="MySubmitAction">
       <result>submit.jsp</result>
</action>
<action name="myClearAction" class="MyClearAction">
       <result>submit.jsp</result>
</action>

当您单击&lt;s:submit value="Submit"/&gt; 生成的输入时,Struts2 将在您的MySubmitAction 中执行您的execute 方法。当您单击&lt;s:submit value="Clear" action="myClearAction"/&gt; 生成的输入时,struts2 应该会覆盖s:form 标签指定的默认操作(我还没有测试过),并将在您的MyClearAction 中执行execute 方法。

【讨论】:

是的,我知道。这是指南中所写的内容。但我试过了,还是不行。 jsp会怎样?
是否需要在 struts.xml 中添加一些常量值或其他内容
“不起作用”是什么意思?有什么例外吗?第二个按钮执行mySubmitAction?

以上是关于Struts2:多个提交按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何从无提交按钮调用 Struts2 操作

php一个表单提交多个页面,怎样获取按钮提交过来的值

如何检测在单个 Action 类中的多个提交按钮场景中单击的提交按钮? [复制]

防止使用 angular.js 提交多个表单 - 禁用表单按钮

Thymeleaf 以一种形式提交多个提交按钮

HTML 表单上的多个提交按钮 - 将一个按钮指定为默认按钮 [重复]