JSFアプリケーションとOracle ADFコントローラについて

JSFページのライフサイクルでは、JSFページに必要なリクエスト処理フェーズがすべて処理されます。ページでADFデータ・コントロールを使用するためADFデータ・バインディングを使用する場合は、ADFライフサイクルからの追加フェーズが必要です。

ADFライフサイクルでは、モデルの処理に必要なADFライフサイクルの全フェーズが適切なタイミングで確実に実行されます。

このトピックでは、次の項目について説明します。

JSFライフサイクル・フェーズとADFライフサイクル・フェーズの統合

ADFライフサイクルでは、データ・モデルの準備と更新、モデル・レイヤーにあるデータの検証、ビジネス・レイヤーでのメソッドの実行が処理されます。ADFライフサイクルでは、ページ定義を使用してデータの収集と表示が管理されます。ページ定義により、データがプールされてローカルに格納されてからページがレンダリングされます。ライフサイクルにより、Webページのレンダリング前にデータベースへの追加ラウンドトリップが発生しなくなり、レンダリング・プロセス中のアプリケーション・パフォーマンスが向上します。

JSFページのライフサイクルの詳細は、「JSFページのライフサイクルについて」を参照してください。

ADFページのライフサイクルの詳細は、「Oracle ADFページのライフサイクルについて」を参照してください。

ライフサイクルは複数のフェーズにわかれています。2つのライフサイクルをともに機能させるには、JSFイベント・リスナー・メカニズムを使用して、ADFライフサイクルのフェーズをJSFライフサイクルのフェーズと統合します。ADFライフサイクルはADFフェーズ・リスナーを使用してフェーズ・イベントをリスニングします。これにより、適切なJSFフェーズの前後に適切なADFフェーズを実行できます。

ADFライフサイクルのフェーズは、その多くがすでにJSFページのライフサイクルで処理されているため、すべてが必須ではありません。次に例を示します。

次のダイアグラムに、ADF Facesコンポーネントを使用してADFアプリケーションにおけるページ・リクエストのライフサイクルを示します。これは、データ・バインディングに関係するJSFライフサイクルとADFライフサイクルのフェーズがどのように協調するかを示しています。

ページ・リクエストのライフサイクル

ADFの「モデルの準備」フェーズは、ビューが使用可能になった直後に実行する必要があるため、JSFの「ビューのリストア」フェーズのafterPhaseイベントで実行されます。

JSFには、コンポーネントのローカル値のチェックを目的としたバリデータを登録する機能が用意されています。この検証は、値がモデルに適用される前のJSFの「検証の処理」フェーズで発生します。モデルが新しい値で更新された後、モデルの検証がトリガーされる必要があります。これは、JSFの「モデル値の更新」フェーズのafterPhaseイベントで発生します。

ADFの「レンダーの準備」フェーズは、モデルに対して実行された全操作がビューのレンダリング前に確実に取得されるように、JSFライフサイクル中にできるかぎり後で実行する必要があります。そのため、レスポンスのレンダリング前に実行される必要があります。これは、JSFの「レスポンスのレンダリング」フェーズのbeforePhaseイベントで実行されます。

JSFページのライフサイクルの実行中に、レンダリング対象のビューが変わることがあります。たとえば、JSFの「アプリケーションの起動」フェーズ中に、アプリケーションのアクションにより戻された結果が、NavigationHandlerでレンダリング対象として新規のビューを選択する必要があることを意味する場合があります。ビューが変わる場合、最初のビューに関連付けられているモデルを中間層と同期化し、第2のビューに関連付けられているモデルを準備する必要があります(ADFの「モデルの準備」フェーズ)。

ADFフェーズ・リスナー

ADFデータ・コントロールにバインドされているADF FacesコンポーネントがJSFページに初めて挿入されるときに、JDeveloperはADF PhaseListenerをJSF構成ファイルに追加します。次に例を示します。

<lifecycle>
  <phase-listener>
    oracle.adf.controller.faces.lifecycle.ADFPhaseListener
  </phase-listener>
</lifecycle>    

フェーズ・リスナーは、ADFページのライフサイクルの実行に使用されます。ADFライフサイクルはADFフェーズ・リスナーを使用してフェーズ・イベントをリスニングし、これによりモデルの準備、モデル更新の検証およびレンダリング対象となるページの準備に関係する適切なADFフェーズを、適切なJSFフェーズの前後に実行できます。

デフォルトのADFレンダー・キット

ADFデータ・コントロールをJSFページで初めて使用するときに、JSF構成ファイルにOracle ADFコンポーネント用のデフォルト・レンダー・キットが追加されます。次に例を示します。

<application>
   <default-render-kit-id>oracle.adf.core</default-render-kit-id>
</application>    

ADF Facesコンポーネントのレンダリングの詳細は、「ADF Facesの利点について」を参照してください。


Oracle ADFページのライフサイクルについて
Oracle ADFライフサイクルのフェーズについて
JSFページのライフサイクルについて

Oracle ADFコントローラの使用
アプリケーションのOracle ADFライフサイクルのカスタマイズ
ページのOracle ADFライフサイクルのカスタマイズ

ADFライフサイクルのフェーズの詳細は、ライフサイクルとフェーズに関する次のJavaDocを参照してください。

oracle.adf.controller.v2.lifecycle.Lifecycle
oracle.adf.controller.v2.lifecycle.Phases

ADFフェーズ・リスナーの詳細は、フェーズ・リスナー・インタフェースに関する次のJavaDocを参照してください。

oracle.adf.controller.faces.lifecycle.ADFPhaseListener