0

情况:

  • 想象一种将项目添加到数据库的形式
  • 用户正确填写表单并使用保存按钮 (h:commandButton) 将项目保存到 DTB
  • 已保存对象的生命周期结束并清除表单
  • 之后,用户(不要问我为什么:-))按下浏览器的刷新按钮
  • 结果是=> DTB中有两个几乎相同的项目(仅在创建时间上有所不同)

我怎样才能防止这种行为?

4

1 回答 1

2

两种方式:

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

    <h:commandButton ...>
        <f:ajax execute="@form" render="@form" />
    </h:commandButton>
    
  2. 发布后发送重定向(称为 POST-Redirect-GET 模式)。

    public String save() {
        // ...
        return "sameview?faces-redirect=true";
    }
    
于 2012-11-23T13:59:22.780 回答