FacesContext
は何に使用されますか?
そしてそれは正確にどこに実装されていますか?
FacesContext
JSFは
javax.faces.context.FacesContext
着信リクエストの処理に関連するすべてのコンテキスト情報を表し、対応する応答を作成するための抽象基本クラス。セクション6.6「FacesContextFactoryで説明されているように、
FacesContext
インスタンスは、リクエスト処理ライフサイクルを開始する前に、getFacesContext
のFacesContextFactory
メソッドを呼び出すことにより、JSF実装によって作成されます。 」。リクエスト処理のライフサイクルが完了すると、JSF実装はreleaseメソッドを呼び出します。これにより、JSF実装は、取得したリソースを解放し、FacesContextインスタンスをプールしてリサイクルし、リクエストごとに新しいインスタンスを作成する機会を与えます。
クラスで指定されている javax.faces.context.FacesContext
とクラスで実装されたMojarra com.Sun.faces.context.FacesContextImpl
およびクラスに実装されたMyFaces org.Apache.myfaces.context.servlet.FacesContextImpl
。
FacesContextには、単一のJavaServer Faces要求の処理と、対応する応答のレンダリングに関連する要求ごとの状態情報がすべて含まれています。リクエスト処理ライフサイクルの各フェーズに渡され、変更される可能性があります。
FacesContextインスタンスは、現在のWebアプリケーションに関連付けられているFacesContextFactoryインスタンスのgetFacesContext()メソッドの呼び出しによって、リクエスト処理の最初に特定のリクエストに関連付けられます。インスタンスは、release()メソッドが呼び出されるまでアクティブのままです。その後、このインスタンスへの参照は許可されません。 FacesContextインスタンスはアクティブですが、このWebアプリケーションを実行するサーブレットコンテナがこのリクエストの処理に利用するスレッド以外のスレッドから参照してはなりません。
http://docs.Oracle.com/javaee/6/api/javax/faces/context/FacesContext.html
FacesContextの新しいインスタンスは、新しいリクエストごとに作成されます。 FacesContextの主なタスクは、関連付けられている特定のリクエストに関するすべての情報を提供することです。たとえば、特定の検証または変換の失敗後にメッセージを追加するには、メッセージをFacesContextに追加するだけで、最終的には目的のメッセージが画面に表示されます。また、呼び出して、いつでもJSFライフサイクルを停止することもできます。
FacesContext.responseComplete();
Facescontextは、フレームワークおよびコンテナ固有のサービスに接続するためのアンカーポイントです。たとえば、Facescontextを介して、バッキングBeanにアクセスしているページリクエストの基になるhttprequestオブジェクトとcontextオブジェクトを取得できます。これには、Webページ要求が実行されているセキュリティコンテキストが含まれます。
JSFの背後にある一般的な哲学は、ユーザーが提供するコンポーネントは、従来のJSP環境で実行されているか、よりエキゾチックな何かで実行されているかなどの詳細に依存しないように抽象的である必要があるということです。特に豆は物を探しに行くのではなく、物を注入することが期待されているので、デザインが悪い兆候の可能性があります。
ただし、場合によっては、何らかの理由で、バッキングBeanからアクセスして範囲外の情報を取得すると便利なため、必要な場合はそこにあります。