モデル1アプリケーション・ページのOracle ADFライフサイクルのカスタマイズ

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

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

アプリケーションのページのライフサイクルを個別にカスタマイズすることもできます。このトピックでは、モデル1アプリケーションのページに対する、このレベルのカスタマイズについて説明します。

モデル1アプリケーションの場合、ADFライフサイクルはページの先頭にあるJSPタグ<adf:pagedefinition/>を使用してJSP内部から実行されます。タグ定義クラスは、次のとおりです。

oracle.adf.controller.jsp.taglib.PageDefinitionTag

このタグにより、ページに対してADFライフサイクルが実行されます。そのために、実行するフェーズと実行順序を定義するLifecycleProcessorに対してexecute()がコールされます。

これらのアプリケーションのライフサイクルをカスタマイズするには、ページのPageControllerクラスを拡張し、変更するメソッドをオーバーライドする必要があります。

手順については、次の各項を参照してください。

モード1アプリケーションのページのADF PageControllerを拡張する手順は、次のとおりです。

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

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

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

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

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

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

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

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

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

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

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

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

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

データ・コントロール・パレットからページにドロップした操作を非表示にする手順は、次のとおりです。

データ・コントロール・パレットからページに操作をドロップする場合は、それぞれのイベント・ハンドラ・コードを個別に記述する必要があります。

  1. PageLifecycleContextクラスをインポートします。このクラスには、ページのライフサイクル中に保持される状態情報がすべて含まれています。

    import oracle.adf.controller.v2.context.PageLifecycleContext;        
  2. データ・コントロール・パレットからページに追加する各操作に対して、イベント・ハンドラ・コードを記述します。

    たとえば、データ・コントロール・パレットを使用して、 setCurrentRowWithKey(String)操作をボタンとしてページにドロップする場合は、次のようなイベント・ハンドラを記述します。

    public void onSetCurrentRowWithKey(LifecycleContext ctx) 
    { 
      super.invokeActionBinding(ctx, "setCurrentRowWithKey"); 
      try 
      { 
        ctx.setForwardPath("targetPage.jsp"); 
        ctx.setRedirect(true); 
      } 
      catch(Exception e) 
      { 
        e.printStackTrace(); 
      } 
    }        

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

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

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