Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 刷新页面(浏览器按钮)导致再次将项目保存到数据库_Jsf_Jsf 2 - Fatal编程技术网

Jsf 刷新页面(浏览器按钮)导致再次将项目保存到数据库

Jsf 刷新页面(浏览器按钮)导致再次将项目保存到数据库,jsf,jsf-2,Jsf,Jsf 2,情况: 设想一个表单用于向数据库添加项 用户正确填写表单并使用保存按钮(h:commandButton)将项目保存到DTB中 保存对象的生命周期已完成,窗体已清除 之后,用户(不要问我为什么:-)按下浏览器的刷新按钮 结果是=>DTB中有两个几乎相同的项(只是创建时间不同) 我怎样才能防止这种行为 两种方式: 使用ajax执行操作(这不会生成浏览器历史记录) 非常感谢你!下个星期我会试试。我已经立即尝试过了,第二种方法对我有效(第一种方法不行,因为它与另一个实现的ajax函数混合在一起)!

情况:

  • 设想一个表单用于向数据库添加项
  • 用户正确填写表单并使用保存按钮(h:commandButton)将项目保存到DTB中
  • 保存对象的生命周期已完成,窗体已清除
  • 之后,用户(不要问我为什么:-)按下浏览器的刷新按钮
  • 结果是=>DTB中有两个几乎相同的项(只是创建时间不同)
我怎样才能防止这种行为

两种方式:

  • 使用ajax执行操作(这不会生成浏览器历史记录)


  • 非常感谢你!下个星期我会试试。我已经立即尝试过了,第二种方法对我有效(第一种方法不行,因为它与另一个实现的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";
    }