1

在用户提交一个 html 表单(使用 method="post")后,它会将他们带回到他们所在的页面(但其中一些数据已更改)。如果用户刷新页面,则再次提交表单。在我的应用程序中,这可能会创建一个非法状态(因为表单数据是在没有经过验证的情况下提交的)。

如何防止用户刷新页面时提交表单?

以下是一些示例代码,可让您对正在发生的事情有一个基本的了解:

<script type="javascript">
function verifyForm() {
//do stuff
}
...
<form onsubmit="return verifyForm();" method="post">
<input name="testing" type="text" size="8" />
<input name="save" type="submit value="Submit Form" />
</form>

然后在 JSP 控制器中:

public class myController implements Controller
{ 
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
{
// do stuff with the form data received in the request
}
}

有几个地方我可能可以解决这个问题:在 html 页面本身,或者在控制器中(在 jsp 中使用 MVC 模式)。到目前为止,我发现这个问题似乎几乎适用于我的问题,但似乎并不完全是在问同样的事情(我也没有使用 PHP)。

4

2 回答 2

1

您需要使用 PRG 模式:Post/Redirect/Get。

在这里阅读:http ://en.wikipedia.org/wiki/Post/Redirect/Get

于 2012-06-07T21:48:57.070 回答
0

规范的解决方案是在每次成功的 POST 后重定向。浏览器将使用 GET 执行重定向,因此不会发布任何内容;如果重新加载,只会重复 GET 请求,而不是初始 POST。

于 2012-06-07T21:49:13.717 回答