JSF 2:ajax呼び出し後のページリダイレクト

私は this のようなナビゲーションケースの問題に悩まされています。 つまり、Ajaxレンダリングされた h:commandLink を使用して、ナビゲーションをあるページから別のページにリダイレクトしようとしています。 ここにバッキングビーンズがあります

@ManagedBean
public class StartBean {

    public void search(){
        FacesContext
            .getCurrentInstance()
            .getExternalContext()
            .getFlash()
            .put("result", "hooray!")
        ;
    }

    public String showResult(){
        return "result?faces-redirect=true";
    }
}

開始ページ


    
        
            
        

        

result ページはメッセージを表示しているだけです。どちらのページもWebモジュールのコンテキストルートにあります。 h:commandLink はajaxの送信後に正しく表示されますが、クリックするとページが更新されます。期待通りに result ページにリダイレクトされません。 その後、ページがリロードされると(F5)、 result ページが表示されます。レンダリングサイクルの問題のようです。

なにか提案を?

前もって感謝します。

1

1 答え

フォームが送信されると、すべての入力コンポーネントとコマンドコンポーネントの rendered 属性が再評価されます。したがって、 false を評価すると、JSFは単にアクションを起動しません。 search()メソッドのリクエスト/レスポンスが終了すると、Flashスコープが終了します。 showResult()のリクエストを送信すると、Flashスコープにはこれ以上存在しません。ビューのスコープにBeanを置いて、代わりに rendered 属性をそのプロパティにバインドすることをお勧めします。

@ManagedBean
@ViewScoped
public class StartBean {

    private String result;

    public void search(){
        result = "hooray";
    }

    public String showResult(){
        return "result?faces-redirect=true";
    }

    public String getResult() {
        return result;
    }

}

〜と


参照:

4
追加された
どういたしまして :)
追加された 著者 BalusC,
ありがとう、それは動作します!
追加された 著者 ruphus,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript