在用户提交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模式)。到目前为止,我发现this question几乎似乎适用于我的问题,但似乎并没有问同样的事情(我也没有使用PHP)。
答案 0 :(得分:1)
您需要使用PRG模式:发布/重定向/获取。
答案 1 :(得分:0)
规范解决方案是在每次成功POST后重定向。浏览器将使用GET执行重定向,因此不会发布任何内容;如果你重新加载,只会重复GET请求而不是初始POST。