0

状況:

  • データベースにアイテムを追加するための1つのフォームを想像してください
  • ユーザーがフォームに正しく入力し、 [保存]ボタン(h:commandButton)を使用してアイテムをDTBに保存します
  • 保存されたオブジェクトのライフサイクルが終了し、フォームがクリアされます
  • その後、ユーザー(理由は聞かないでください:-))ブラウザの更新ボタンを押します
  • 結果は=>DTBにはほぼ同じアイテムが2つあります(作成時間だけが異なります)

どうすればその動作を防ぐことができますか?

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 に答える