7

これは、「JSFがJSPに取って代わった理由です」という最短の答えになる質問になると思いますが、先に進んで質問します。

質問:私は疑問に思っています: JSF ページの Response オブジェクトを取得できますか (存在する場合)?

なぜ不思議ですか?: JSF ページから JSP ページに渡す必要がある状況に陥ったので、response.sendRedirectJSF ページから呼び出された Bean から (を使用して) リダイレクトしないでください。向かっています。

これはもっときれいな方法でできると思いますが、方法がわかりません!

EDIT :その上で、JSF ページからリダイレクトするのに最適な方法についても尋ねます。

ご提案いただきありがとうございます。

4

2 に答える 2

10

responseさて、オブジェクトを取得したい場合は、以下のように入れることができますJSF!

HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();

responseただし、オブジェクトを取得して外部にリダイレクトする必要はありませんJSF。これは、次の方法でより簡単に実行できます。

ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
externalContext.redirect("http://www.example.com/myJspPage.jsp");

編集

アクション以外のメソッドを使用している場合は、上記のいずれかを使用できます。ただし、アクションメソッドを使用している場合、適切なJSFリダイレクト方法は次のとおりです。

public String goToOutsideAction(){
    ....
    return "/myPage.xhtml?faces-redirect=true"
}

メソッドはコンテキスト相対ビュー ID を返す必要があり、ターゲットは JSF ページである必要があります。

于 2013-05-27T17:04:48.133 に答える
1

を呼び出して、マネージド Bean の応答オブジェクトを取得できます。

HttpServletResponse response = (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse()

How to stream a file download in a JSF backing Bean?から改作されたコード )

応答オブジェクトを取得したら、ヘッダーの変更などの操作を実行できます。もちろん、ajax リクエストからリダイレクトを送信するなど、できないこともあります。

于 2013-05-27T17:11:48.890 に答える