web-dev-qa-db-ja.com

送信されたリクエストがAjaxリクエストである場合にManagedBeanからリダイレクトする方法は?

JSF2でPrimeFacesを使用しています。ログインとパスワードをAjaxリクエストとして送信して、ユーザーを認証しようとしています。そして、バッキングBeanのアクションメソッドでは、ユーザーを検証し、検証が成功した場合に新しいビューにリダイレクトしようとしています。

プライムフェイスを使用しているときにこれは可能ですか?

私はprimefacesのp:commandButton、私はajaxの振る舞いかナビゲーションのどちらかしか持てません。

16
Bhesh Gurung

はい、結果として(デフォルト)フォワードの代わりにリダイレクトを送信するだけです。 <navigation-case>- less JSF 2.0の方法は?faces-redirect=trueをアクションメソッドの結果文字列に。

例えば。

public String login() {
    // ...
    return "home?faces-redirect=true";
}
29
BalusC

ここにあなたが役立つかもしれないもう一つのテクニックがあります。これは、ナビゲーションを実装しないPrimefaces属性からAJAXを介してメソッドを呼び出す場合です。たとえば、nodeSelectionListenerによって選択されたメソッドを持つp:treeオブジェクトがあります。

そのメソッドでは、次のようにリダイレクトを呼び出すことができます。

String url = (something)
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
try {
        ec.redirect(url);
} catch (IOException ex) {
        Logger.getLogger(Navigation.class.getName()).log(Level.SEVERE, null, ex);
}

これがお役に立てば幸いです。

16
AlanObject