1

我有一个 struts2、Hibernate 和 Spring 应用程序。它在我们的本地端正常工作。当我们在开发服务器上部署应用程序时,有时某些表单会在表单提交时提交两次。这会导致在数据库中输入重复数据。

这仅在服务器上发生。这在 Firefox 上很少发生,但在 IE 中却很常见。同样,这仅发生在某些表格上,而不会发生在其他表格上。但是,没有什么可以区分这些形式。

我们有时使用 struts 2 提交按钮来提交表单,有时使用带有简单按钮的 java 脚本来提交表单。

作为最后一种方法,我们可以使用拦截器来防止双重表单提交(我们将不得不对许多表单进行更改),但关键是它根本不会发生在本地端。为什么它只在服务器上发生,而在某些形式上也如此,有时只在服务器上发生。

编辑:

我注意到的另一件事是,当我不使用网络代理时,即使在服务器表单上也不会提交两次,但是当使用网络代理时,表单会提交两次。该应用程序在没有任何代理的情况下正常工作。根本没有重复。

代理与它有什么关系?有没有人遇到过网络代理和双重表单提交的任何此类问题?

编辑2:

刚才我发现,在使用代理时,有时访问会被拒绝,在这种情况下,浏览器会发送两次发布请求,从而导致双重表单提交。

如果我看到 http 标头,我可以看到两个发布请求,其中一个在标头中包含以下内容

需要 HTTP/1.1 407 代理身份验证(ISA 服务器需要授权才能完成请求。对 Web 代理服务的访问被拒绝。)

有什么想法吗?请帮忙。

4

1 回答 1

0

如果你使用 jsp 并使用

<html:submit .... onClick="some javascript code">

你可以尝试使用

<html:button .... onClick=:some javascript code" >

发生在我身上的情况是

  1. 我在我的 jsp 页面中使用“表单”标签
  2. 我在表单标记内使用附加按钮,该按钮使用提交表单的 javascript

希望它会有所帮助。

于 2011-09-15T20:49:32.607 回答