web-dev-qa-db-ja.com

FacesContextは何に使用されますか?

FacesContextは何に使用されますか?

そしてそれは正確にどこに実装されていますか?

31
meenus

JSF 2.0仕様の6.1章からの引用

FacesContext

JSFはjavax.faces.context.FacesContext着信リクエストの処理に関連するすべてのコンテキスト情報を表し、対応する応答を作成するための抽象基本クラス。

セクション6.6「FacesContextFactoryで説明されているように、FacesContextインスタンスは、リクエスト処理ライフサイクルを開始する前に、getFacesContextFacesContextFactoryメソッドを呼び出すことにより、JSF実装によって作成されます。 」。

リクエスト処理のライフサイクルが完了すると、JSF実装はreleaseメソッドを呼び出します。これにより、JSF実装は、取得したリソースを解放し、FacesContextインスタンスをプールしてリサイクルし、リクエストごとに新しいインスタンスを作成する機会を与えます。

クラスで指定されている javax.faces.context.FacesContext とクラスで実装されたMojarra com.Sun.faces.context.FacesContextImpl およびクラスに実装されたMyFaces org.Apache.myfaces.context.servlet.FacesContextImpl

以下も参照してください。

31
Matt Handy

FacesContextには、単一のJavaServer Faces要求の処理と、対応する応答のレンダリングに関連する要求ごとの状態情報がすべて含まれています。リクエスト処理ライフサイクルの各フェーズに渡され、変更される可能性があります。

FacesContextインスタンスは、現在のWebアプリケーションに関連付けられているFacesContextFactoryインスタンスのgetFacesContext()メソッドの呼び出しによって、リクエスト処理の最初に特定のリクエストに関連付けられます。インスタンスは、release()メソッドが呼び出されるまでアクティブのままです。その後、このインスタンスへの参照は許可されません。 FacesContextインスタンスはアクティブですが、このWebアプリケーションを実行するサーブレットコンテナがこのリクエストの処理に利用するスレッド以外のスレッドから参照してはなりません。

参照:

http://docs.Oracle.com/javaee/6/api/javax/faces/context/FacesContext.html

5
Mahdi Esmaeili

FacesContextの新しいインスタンスは、新しいリクエストごとに作成されます。 FacesContextの主なタスクは、関連付けられている特定のリクエストに関するすべての情報を提供することです。たとえば、特定の検証または変換の失敗後にメッセージを追加するには、メッセージをFacesContextに追加するだけで、最終的には目的のメッセージが画面に表示されます。また、呼び出して、いつでもJSFライフサイクルを停止することもできます。

    FacesContext.responseComplete();
4
Aalekh

Facescontextは、フレームワークおよびコンテナ固有のサービスに接続するためのアンカーポイントです。たとえば、Facescontextを介して、バッキングBeanにアクセスしているページリクエストの基になるhttprequestオブジェクトとcontextオブジェクトを取得できます。これには、Webページ要求が実行されているセキュリティコンテキストが含まれます。

JSFの背後にある一般的な哲学は、ユーザーが提供するコンポーネントは、従来のJSP環境で実行されているか、よりエキゾチックな何かで実行されているかなどの詳細に依存しないように抽象的である必要があるということです。特に豆は物を探しに行くのではなく、物を注入することが期待されているので、デザインが悪い兆候の可能性があります。

ただし、場合によっては、何らかの理由で、バッキングBeanからアクセスして範囲外の情報を取得すると便利なため、必要な場合はそこにあります。

参照: Facescontext Context Objectの使用とは

2
abbas