【问题标题】:Struts action resubmissionStruts 动作重新提交
【发布时间】:2014-07-04 11:36:13
【问题描述】:

嗨,我在页面上设计了带有方法的支撑动作类。当我调用方法正确完成并获得成功结果时。但是当我刷新它再次提交数据库中的上一页值时,我遇到了问题。如何避免这一点。

我的第一个jsp页面表单

<form name="manualorder" action="manual_order" onsubmit="return validation();">

struts.xml

 <action name="purchaseorder" class="materialTypeMasterAction" method="createorder" >
    <result name="success">/pages/procurement/PurchaseOrder.jsp</result>
    </action>



    <action name="manual_order" class="materialTypeMasterAction" method="enquiry_process">
    <result name="success">/pages/procurement/success.jsp</result>
    </action>

当我再次刷新此成功页面时,它会再次call enquiry_process method 并提交我在 createorder 方法中创建的第一个值。

【问题讨论】:

  • 使用重定向后获取。
  • 你需要使用重定向操作
  • 当您刷新页面时..当前操作是 materialTypeMasterAction 这就是问题发生的原因

标签: jsp struts2


【解决方案1】:

您可以使用重定向操作解决您的问题。 只需按如下方式更改您的 struts 文件(我已经添加了一项成功操作:

<action name="purchaseorder" class="materialTypeMasterAction" method="createorder" >
    <result name="success">/pages/procurement/PurchaseOrder.jsp</result>
</action>
<action name="SuccessAction" class="SuccessPage">

  <result name="success">/pages/procurement/success.jsp</result>

<action name="manual_order" class="materialTypeMasterAction" method="enquiry_process">
        <result type="redirectAction">SuccessAction</result>
</action>

请不要忘记创建SuccessPage

【讨论】:

  • 使用redirectAction 而不是redirect-action
  • 我用的是redirect-action,没有问题
  • @ButaniVijay 由于 Struts 2.2.1 redirect-action 已弃用。将此结果类型使用 redirectAction
【解决方案2】:

使用post-redirect-get pattern

成功后,重定向到"success" 页面。这样,如果用户刷新,他们就会再次获得相同的页面。

请参阅此链接Preventing Form Resubmission (due refreshing),另请参阅Preventing Double Form Submission 这可能对你有帮助

【讨论】:

  • @user3805315 我已经更新了我的答案并添加了一个链接,该链接可能会对您有所帮助
  • 重定向成功后.jsp。我尝试刷新那个success.jsp页面,它发生的时候。如果我刷新该页面,它将提交重复的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多