7

大家好,我有一些 jsp 页面,我使用 struts2 来处理我的表单。用户提交表单后,地址栏中显示的 url 变成了 somthing.action,所以当用户刷新页面时,表单会再次提交。我该如何处理?提交表格后。

4

3 回答 3

4

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

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

于 2012-11-23T12:41:48.117 回答
3

对其他两个答案+1。

Post/Redirect/Get是每个 Web 技术的经典模式。

当您使用 Struts2 时,令牌拦截器是另一种方法;

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

页面加载完成后只需将url重置为原来的,按F5就会得到原来的页面,而不是重新提交请求。

 $(document).ready(function() {
   window.history.pushState("","", "myOriginalUrlWithNoParams");
 });
于 2012-11-23T12:57:47.993 回答
1

POST REDIRECT GET

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

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

于 2012-11-23T12:45:12.063 回答