避免重复提交Struts 2 jsp页面

时间:2012-11-23 12:27:59

标签: java html html5 jsp struts2

大家好我有一些jsp页面,我使用struts2来处理我的表单。  在用户提交表单后,地址栏中显示的URL将变为somthing.action,因此当用户刷新页面时,表单将再次提交。我怎么处理这个?提交表格后。

3 个答案:

答案 0 :(得分:4)

如果目标是阻止重复提交表单,请使用token拦截器http://struts.apache.org/2.x/docs/token-interceptor.htmltokenSession拦截器http://struts.apache.org/2.x/docs/token-session-interceptor.html

如果您只是想在提交后刷新页面而不再提交,那么请重定向到仅显示结果而非表单的操作。使用redirectAction结果。

答案 1 :(得分:3)

+1以及其他答案。

Post/Redirect/Get 是每种网络技术的经典模式。

当您使用Struts2时,

Token Interceptor 是另一种方法;

还有第三种方法,如果你不关心与旧浏览器的复古兼容性,或者禁用Javascript的浏览器: HTML5 window.history.pushState

只需在页面加载后将网址重置为原始网址,按F5即可获取原始网页,而不是重新提交请求。

 $(document).ready(function() {
   window.history.pushState("","", "myOriginalUrlWithNoParams");
 });

答案 2 :(得分:1)

POST REDIRECT GET

需要遵循此模式以防止在刷新时重新提交表单。这意味着,在提交POST请求后,POST应发送REDIRECT响应,以使用GET获取目标网页。使用此模式,如果用户刷新页面,则只会再次发生GET请求,因此将获取相同的页面而不更新服务器中的任何内容。

这是推荐用于网络的常见设计模式。谷歌会为此提供大量资源。