Jsf 刷新页面(浏览器按钮)导致再次将项目保存到数据库
情况:Jsf 刷新页面(浏览器按钮)导致再次将项目保存到数据库,jsf,jsf-2,Jsf,Jsf 2,情况: 设想一个表单用于向数据库添加项 用户正确填写表单并使用保存按钮(h:commandButton)将项目保存到DTB中 保存对象的生命周期已完成,窗体已清除 之后,用户(不要问我为什么:-)按下浏览器的刷新按钮 结果是=>DTB中有两个几乎相同的项(只是创建时间不同) 我怎样才能防止这种行为 两种方式: 使用ajax执行操作(这不会生成浏览器历史记录) 非常感谢你!下个星期我会试试。我已经立即尝试过了,第二种方法对我有效(第一种方法不行,因为它与另一个实现的ajax函数混合在一起)!
- 设想一个表单用于向数据库添加项
- 用户正确填写表单并使用保存按钮(h:commandButton)将项目保存到DTB中
- 保存对象的生命周期已完成,窗体已清除
- 之后,用户(不要问我为什么:-)按下浏览器的刷新按钮
- 结果是=>DTB中有两个几乎相同的项(只是创建时间不同)
非常感谢你!下个星期我会试试。我已经立即尝试过了,第二种方法对我有效(第一种方法不行,因为它与另一个实现的ajax函数混合在一起)!你能告诉我我做了什么吗?为什么重定向解决了我的问题?重定向基本上指示webbrowser在给定URL上发送新的GET请求。F5然后会刷新重定向的GET请求,而不是最初的POST请求。Ajaj,对不起,我犯了一个可笑的错误,找了其他地方,但没有任何帮助。我必须暂时打开此票证,并尝试稍后继续:-)无论如何,谢谢它现在可以工作,但不幸的是,它无法从be中使用,因为整个视图已重新加载,因此已清除。。。
<h:commandButton ...>
<f:ajax execute="@form" render="@form" />
</h:commandButton>
public String save() {
// ...
return "sameview?faces-redirect=true";
}