Struts 2 Double form提交 - 为什么?

时间:2012-12-18 07:54:46

标签: struts2

我有一些简单的行动:

<action name="edit" class="EditAction">
  <result>/WEB-INF/jsp/form.jsp</result>
</action>

<action name="preview" class="PreviewAction">
  <result>/WEB-INF/jsp/preview.jsp</result>
  <result name="input">/WEB-INF/jsp/form.jsp</result>
</action>

<action name="store" class="StoreAction">
  <result>/WEB-INF/jsp/confirmation.jsp</result>
  <result name="input">/WEB-INF/jsp/preview.jsp</result>
</action>

<global-results>
  <result name="invalid.token">/WEB-INF/jsp/invalidToken.jsp</result>
</global-results>

和经典场景:用户与文本输入交互,按保存,查看预览页面并按保存以保存数据,无需双击按钮,刷新页面等。

为什么在这种情况下会发生双重提交?

1 个答案:

答案 0 :(得分:1)

即使我在浏览器刷新时在struts2中有双重表单提交问题。我使用post-redirect-get模式解决了这个问题,以避免双重或重复的表单提交。之所以发生这种情况,是因为根据POST请求点击“刷新页面”以获得响应将重新发出POST请求。它会重复你为了达到当前页面所做的操作,即使按下双按钮也是如此。它发生在struts2中的成功和错误。   我建议你在必要时进行这种改变。

<action name="onStoreRedirect">
  <result name="success" type="redirect">store</result>
</action>

<action name="store" class="StoreAction">
  <result>/WEB-INF/jsp/confirmation.jsp</result>
  <result name="input">/WEB-INF/jsp/preview.jsp</result>
</action>