2011-01-27 4 views
5

JSFがビューをどのように格納し、ビューを復元しているかを理解したいと思います。私は、各ビューの個別のビューIDを作成し、それをサーバーに格納していることを読んでいます。それから、それが検索されます。以下は私の質問です:JSFでのビューIDの格納

  • どのような基本ビューIDが作成されて保存されていますか?
  • faces-config.xmlで宣言されているJSPに基づいて作成されていますか?
  • 基本的に、各JSPの1つのビューIDに対して作成されますか?
  • 応答を表示するためにビューIDがどのように渡されますか?リクエストパラメータに渡されますか?

答えて

8

どのような基本ビューIDが作成されて保存されていますか?

ビューIDは、ビューファイルのコンテキスト相対パスです。例えば。 /foo.jspまたは/foo.xhtmlViewHandlerの実装は、それを作成してUIViewRootに格納する責任があります。

faces-config.xmlで宣言されたJSPに基づいて作成されますか?

これらは必ずしもfaces-config.xmlのどこにでも宣言する必要はありません。すべて着信要求に対して、それがFacesServlet自体は、プレフィックスパターン(/faces/*)またはそれぞれサフィックスパターン(*.jsf)にマッピングされているかどうかに応じて、そのgetPathInfo()又はgetServletPath()方法によって下地HttpServletRequestオブジェクトによって要求URIから抽出されます。 JSFはfaces-config.xml<navigation-case>に従って新しいビューにナビゲートする必要がある場合

、新しいビューIDは、単にそれから抽出され、新しいUIViewRootは呼出し動作フェーズの終了によって作成されます。さもなければ、JSFは要求が発生したのと同じビューに戻ります。

基本的に、各JSPの1つのビューIDに対して作成されますか?

はい、すべてのビューには固有の識別子があります。これは基本的にWebアプリケーションのコンテキスト内の場所です。

応答を表示するためにビューIDがどのように渡されますか?リクエストパラメータに渡されますか?

UIViewRootに保存されています.FacesContext#getViewRoot()で利用可能です。 renderView()メソッドでは、ViewHandlerの実装ではgetViewId()が呼び出されます。

関連する問題