JSFページのOracle ADFライフサイクルのカスタマイズ

Oracle ADFページのライフサイクルでは、ページのレンダリング前にADFモデルを準備します。このライフサイクルを使用して、ADFデータ・コントロールを使用するアプリケーションでADFモデルをサポートできます。

独自のライフサイクル・ファクトリを作成して、アプリケーション全体のライフサイクルをカスタマイズできます。詳細は、「アプリケーションのOracle ADFライフサイクルのカスタマイズ」を参照してください。

また、ライフサイクルをアプリケーションの個別ページにあわせてカスタマイズしたり、カスタマイズしたライフサイクルをアプリケーションの数ページまたは全ページに再利用することも可能です。このトピックでは、このレベルでのJSFページに関するカスタマイズについて説明します。項目は次のとおりです。

JSFページのライフサイクルのカスタマイズの概要

JSFアプリケーションの場合、ページのライフサイクル実装クラスは次のクラス内で拡張されます。

oracle.adf.controller.faces.lifecycle.FacesPageLifecycle

JSFアプリケーションの場合、ADFライフサイクルでは追加フェーズを使用してJSFライフサイクルを拡張します。統合方法の詳細は、「JSFアプリケーションとOracle ADFコントローラについて」を参照してください。

JSFライフサイクルをカスタマイズするために、リクエスト処理ライフサイクルの特定のフェーズについて処理の前後にオブジェクトに通知できます。このメカニズムは、ADFライフサイクルをJSFライフサイクルと統合するためにADF自体で使用されます。このイベント・メカニズムの使用方法の詳細は、「イベントおよびJSFライフサイクルについて」を参照してください。

JSFアプリケーションのページ用にADFページのライフサイクルをカスタマイズするには、PageControllerクラスを拡張し、変更するメソッドをオーバーライドしてから、ページに新規のページ・コントローラを使用する必要があります。

JSFページのライフサイクルのカスタマイズ

JSFページのライフサイクルをカスタマイズするには、次の手順を実行します。

JSFアプリケーションのページのADFページ・コントローラを拡張する手順は、次のとおりです。

  1. oracle.adf.controller.v2.lifecycle.PageControllerクラスを拡張するJavaクラスを作成します。「新規のJavaクラスの作成」を参照してください。

  2. Javaソース・エディタに新規クラスを表示し、「ソース」「メソッドのオーバーライド」を選択します。

  3. 「メソッド」リストからオーバーライドするメソッドを選択し、メソッドのJavadocをコピーする場合は「Javadocのコピー」を選択します。

  4. オーバーライドするメソッドに必要なコードを追加します。

JSFアプリケーション・ページのコンポーネントに新規ページ・コントローラ・クラスを使用する手順は、次のとおりです。

  1. アプリケーションでページを作成します。「JSFページの作成」を参照してください。

  2. そのページで使用するデータ・コントロールを追加します。「データ・コントロール・パレットを使用したUIコンポーネントの挿入」を参照してください。

  3. アプリケーション・ナビゲータで、「アプリケーション・ソース」ノードと「pagedefs」パッケージを順番に拡張します。アプリケーション・テンプレート「Webアプリケーション [default]」または「Webアプリケーション [JSF、JSP、EJB]」を使用してアプリケーションを作成した場合、これは「ViewController」プロジェクト内の「view.pagedef」パッケージです。

  4. ページのページ定義(ファイル名pagenamePageDef.xml)を選択します。このファイルは、ページに最初のデータ・コントロールを追加したときに作成されています。

  5. 構造ウィンドウが表示されない場合は、「表示」メニューを使用して表示します。

  6. 構造ウィンドウで、ページ定義からpagenamePageDefという最上位ノードを選択します。

  7. プロパティ・インスペクタが表示されない場合は、「表示」メニューを使用して表示します。

  8. 「ControllerClass」プロパティに新規ページ・コントローラのパス名を入力するか、省略記号(「...」)をクリックしてクラスを検索します。

複数ページに対するカスタマイズ済ライフサイクルの再利用の概要

ページ・コントローラ・クラスの概念はJSFマネージド(バッキング)Beanの概念に似ています。ADFでは、ページ・コントローラをマネージドBeanとして使用登録できます。この方法を使用すると、汎用ページ・コントローラ・コードを記述できます。この種のコードは複数ページ間で再利用できますが、JSF構成ファイルに指定されたマネージドBeanプロパティを介して特定のページごとに構成可能です。

ページ・コントローラとしてマネージドBeanを使用するために、ADFはJSF EL式言語表記法を使用してページ定義でControllerClassプロパティを指定する操作をサポートしています。これには次の利点があります。

このスキームを使用すると、汎用ページ・コントローラ・クラスは全ページで再利用されますが、JSF構成ファイル内で指定したマネージドBeanプロパティを介して特にページごとに構成されます。

複数ページに対するカスタマイズ済ライフサイクルの再利用

1つのページ・コントローラ・クラスを複数のJSFページに使用する手順は、次のとおりです。

  1. PageControllerクラスを拡張するクラスを作成します。

  2. このクラスをマネージドBeanとして登録します。

    手順1で作成したページ・コントローラ・クラスを「クラス」として指定し、このBeanに必要なスコープ(通常は「application」)を「スコープ」として指定します。

    JSF構成ファイルのソースでは、マネージドBeanは次のようになります。

    <managed-bean>
      <managed-bean-name>myManagedBean</managed-bean-name>
      <managed-bean-class>view.myPageController</managed-bean-class>
      <managed-bean-scope>application</managed-bean-scope>
      <!--oracle-jdev-comment:managed-bean-jsp-link:1use_managed.jsp-->
    </managed-bean>        
  3. アプリケーション内で同じページ・コントローラ・クラスを再利用するページごとに、ControllerClassプロパティを新規のページ・コントローラ・クラスに設定します。設定手順は次のとおりです。

    アプリケーション・ナビゲータで、ページのページ定義ファイル(名前の書式はpage PageDef.xml)を選択します。

    構造ウィンドウで、ページのトップレベル・ノード(名前の書式はagePageDef)を右クリックして「プロパティ」を選択します。

    「アドバンスト・プロパティ」タブをクリックし、ControllerClassプロパティについて省略記号(...)をクリックし、新規のページ・コントローラ・クラスを検索します。

    「ソース」ビューにページ定義を表示し、参照を変更して、新規コントローラ・クラス用に登録したマネージドBeanに#{myManagedBean}などのEL参照を与えます。

    エントリは次の書式のページ定義ファイルに追加されます。

    ControllerClass="#{mymanagedbean}"


Oracle ADFページのライフサイクルについて
Oracle ADFライフサイクルのフェーズについて
アプリケーションのOracle ADFライフサイクルのカスタマイズ
Oracle ADFでの名前付きイベントの使用
ビジネス・サービス・メソッドの実行
ライフサイクル・クラスのコードおよびJavadocの表示

ADFライフサイクル・クラスの詳細は、次のJavadocを参照してください。

Oracle Application Development FrameworkライフサイクルAPIリファレンス