ヘッダーをスキップ
Oracle® Fusion Middleware Oracle ADFデータ・コントロールによるアプリケーションの開発
12c (12.1.2)
E48095-02
  目次へ移動
目次

前
 
次
 

2 ADFデータ・コントロールの使用

この章では、ビジネス・サービスを抽象化するためにデータ・コントロールを作成し、「データ・コントロール」パネルを使用してデータバインドされたページを作成する方法を説明します。また、宣言的なバインディングを設計時に指定し、実行時に実装する方法についての説明もあります。

この章には次の項が含まれます:

2.1 データ・コントロール・アプリケーションの中心となる開発ステップ

大まかに述べると、データ・コントロールを組み込んだアプリケーションの宣言的開発プロセスには、次のような中心となるステップが含まれます。

2.2 データ・コントロールを使用したビジネス・サービスの公開

アプリケーションのサービスの準備ができたら、JDeveloperを使用して、UIコンポーネントとサービスとの宣言的バインドに必要な情報を提供するデータ・コントロールを作成できます。

たとえば、Java EEアプリケーションでは、通常、データベース内の表を表すエンティティBeanを作成し、全EJBに対するセッション・ファサードを作成します。このファサードは、ベースとなるエンティティへの一元化されたインタフェースです。Oracle ADFアプリケーションでは、セッションBeanに対するデータ・コントロールを作成でき、そのデータ・コントロールには、セッションBean下のすべてのEJBに関する記述が含まれます。

データ・コントロールの生成には、「データ・コントロールの作成」メニュー・アイテムを使用します。データ・コントロールは、1つ以上のXMLメタデータ・ファイルで構成され、これらのファイルでは、実行時にバインディングと連動するサービスの機能が定義されます。データ・コントロールは、基礎となるサービスと連動します。

2.2.1 ADFデータ・コントロールの作成方法

アダプタ・ベースのデータ・コントロールは、JDeveloperの「アプリケーション」ウィンドウ内で作成します。


注意:

ADFビジネス・コンポーネントをベースとするアプリケーションの場合、データ・コントロールはアプリケーション・モジュールを作成する際に自動的に作成されます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のアプリケーション・モジュールによるビジネス・サービスの実装に関する項を参照してください。


始める前に:

データ・コントロール使用の一般的な知識があると役立ちます。詳細は、第2.2項「データ・コントロールを使用したビジネス・サービスの公開」を参照してください。

次のタスクを完了する必要があります。

アプリケーション・ワークスペースを作成し、データ・コントロールの基礎にするビジネス・サービスを追加します。アプリケーション・ワークスペースの追加については、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。

データ・コントロールを作成する手順は、次のとおりです。

  1. アプリケーション・ワークスペース内でデータ・モデル・プロジェクトの最上位ノードを右クリックして、「新規」を選択し、「ギャラリから」を選択します。

  2. 「新規ギャラリ」で、「ビジネス層」を展開し、「データ・コントロール」を選択して、作成するデータ・コントロールのタイプを選択し、「OK」をクリックします。

  3. ウィザードの残りのステップを完了します。

    アダプタ・ベースのデータ・コントロールの作成については、各種のデータ・コントロールについて説明している、このガイドの後続の章を参照してください。


注意:

場合によっては、データ・コントロールの基礎にするクラスまたはオブジェクトを右クリックし、「データ・コントロールの作成」を選択することによってデータ・コントロールを作成できます。


2.2.2 データ・コントロール作成時のプロジェクト内の処理

データ・コントロールを作成する際に、JDeveloperによってデータ・コントロール定義ファイル(DataControls.dcx)が作成され、概要エディタでファイルが開き、ファイルの階層が「データ・コントロール」パネルに表示されます。このファイルにより、データ・コントロールがサービスおよびバインディングと直接連動して動作することが可能になります。

エディタ・ウィンドウの「ソース」タブをクリックすることによって、対応するXMLファイルからのコードを表示できます。

2.2.2.1 DataControls.dcx概要エディタ

DataControls.dcxファイルの概要エディタは、データ・コントロール・オブジェクトの階層と、データ・モデルの公開メソッドを表示します。

概要エディタおよび「データ・コントロール」パネルで使用されるアイコンの説明は、表2-1を参照してください。

データ・コントロール・オブジェクトの設定を変更するには、オブジェクトを選択し、「編集」アイコンをクリックします。データ・コントロールの編集方法の詳細は、7.2項「データ・コントロールの構成」を参照してください。

図2-1は、EJBデータ・コントロールの概要エディタを示しています。

図2-1 概要エディタでのDataControls.dcxファイル

customerFindAllのコレクションとその属性が表示される

2.2.2.2 「データ・コントロール」パネル

「データ・コントロール」パネルはパレットとして機能し、ノードを「データ・コントロール」パネルからWebページのデザイン・エディタにドラッグすることにより、データバインドされたUIコンポーネントを作成できます。データ・コントロールを作成した後、「データ・コントロール」パネルが「アプリケーション」ウィンドウに表示されます。図2-2は、EJBデータ・コントロールの「データ・コントロール」パネルを示しています。

図2-2 「データ・コントロール」パネル

OrdersSessionEJBLocalデータ・コントロールおよび最上位の子

2.2.3 「データ・コントロール」パネルのビジネス・サービスの表示

「データ・コントロール」パネルには、アプリケーションのビジネス・サービスに対して作成されたすべてのデータ・コントロールがリストされます。また、UIコンポーネントへのバインドに使用できるコレクション(データ・オブジェクトの行セット)、属性、メソッド、および組込み操作の階層が公開されます。

たとえば、図2-3OrdersSessionEJBLocalデータ・コントロールを表示する「データ・コントロール」パネルを示しています。コレクション・ノード(customerFindAllcustomerFindByIdempFindAllなど)は、問合せメソッド(この例では、セッション・ファサードのgetterメソッド)から返されるデータ・コレクションを表します。これらのコレクション・オブジェクトをページにドロップして、フォームや表などのUIコンポーネントを作成できます。

その他のサービス・メソッド(JPAベースのデータ・コントロールの場合は、先頭にgetが付いていないメソッド)は、メソッド・アイコンによって表示されます。これらのオブジェクトは、コマンド・ボタンまたはリンクとしてフォームにドロップできます。メソッドが引数をとる場合、その引数は、メソッドのノード内にネストされたパラメータとして「パラメータ」ノードに表示されます。メソッドから返されるオブジェクトも表示されます。

図2-3 「データ・コントロール」パネルの主要ノード

OrdersSessionEJBLocalデータ・コントロールとその子

ヒント:

「データ・コントロール」パネルが表示されない場合は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データ・コントロール」パネルを開く方法に関する項を参照してください。


返されるオブジェクトはそれぞれ、関連したオブジェクトに対して定義された属性、メソッド、およびネストされたコレクションを表示します。図2-4は、itemFindAllコレクションから返されるアイテムBeanに対して定義された属性とメソッドを示しています。


注意:

データ・コントロールの基礎となるサービスが変更されると、これらの変更はデータ・コントロールに反映されます。サービスに対する変更が「データ・コントロール」パネルにすぐ反映されない場合は、パネルを手動でリフレッシュできます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データ・コントロール」パネルをリフレッシュする方法に関する項を参照してください。


図2-4 返されるコレクションの子ノード

ordFindAllコレクションとその子

データ・コントロール・タイプに応じて、様々な組込み操作が公開されます。一部のデータ・コントロールでは、宣言的な名前付き基準も使用でき、これを使用して検索フォームを作成できます。図2-5は、EJBデータ・コントロールの操作とデフォルトの名前付き基準を示しています。

図2-5 「データ・コントロール」パネルの操作と名前付き基準

データ・コントロールの組込み操作

2.2.4 データ・コントロールの組込み操作

データ・コントロール・フレームワークは、データ・コントロールの標準操作のセットを定義します。これらの操作は、基礎となるビジネス・サービスの機能を使用して実装されます。実行時に、これらのデータ・コレクション操作の1つがデータ・バインディング・レイヤーによって名前を指定して起動されると、データ・コントロールは、組込み機能を処理する適切なサービス・メソッドにそのコールを委譲します。たとえば、EJBおよびBeanデータ・コントロールでは、Next操作はBeanコレクションのイテレータに依存します。

ほとんどの組込み操作は、現在の行に作用します。ただし、execute操作はデータ・コントロール自体をリフレッシュし、commitおよびrollback操作は、トランザクションの範囲内で実行されたすべての変更に影響を与えます。

使用可能な操作は、データ・コントロールのタイプと、基礎となるビジネス・サービスの機能によって異なります。次に、組込み操作すべてのリストを示します。

  • Create: 現在の行になる新規行を作成。JPAベースのデータ・コントロールの場合、この新規行は行セットにも追加されます。

  • CreateInsert: 現在の行となる新規行を作成し、その行を行セットに挿入。ADFビジネス・コンポーネント・アプリケーション・モジュールに対してのみ使用できます。

  • Create With Parameters: 名前付きパラメータを使用して現在の行になる新規行を作成し、その行を行セットに挿入。ADFビジネス・コンポーネント・アプリケーション・モジュールに対してのみ使用できます。

  • Delete: 現在の行を削除します。

  • Execute: アクセッサ・メソッドを実行または再実行することによって、データ・コレクションをリフレッシュします。

    ExecuteWithParams: パラメータとして渡された変数に新しい値を割り当てた後で、関連した問合せを実行または再実行することにより、データ・コレクションをリフレッシュ。この操作は、パラメータ化された問合せに基づくデータ・コントロール・コレクション・オブジェクトに対してのみ使用できます。

  • First: 行セット内の最初の行を現在の行に設定します。

  • Last: 行セット内の最後の行を現在の行に設定します。

  • Next: 行セット内の次の行を現在の行に設定します。

  • Next Set: 1つ後の行のセットに移動します。

  • Previous: 行セット内の前の行を現在の行に設定します。

  • Previous Set: 1つ前の行のセットに移動します。

  • removeRowWithKey: パラメータとして渡された行キーのシリアライズされた文字列表現を使用して行の検索を試行します。検出されると、その行が削除されます。

  • setCurrentRowWithKey: パラメータとして渡された行キーのシリアライズされた文字列表現を使用して行の検索を試行します。検出されると、その行が現在の行になります。

  • setCurrentRowWithKeyValue: パラメータとして渡された主キーの属性値を使用して行の検索を試行します。検出されると、その行が現在の行になります。

  • commit: 現在のトランザクションで行われたすべての変更をデータベースに永続化させます。

  • rollback: 現在のトランザクションのコンテキスト内でのすべての変更を元に戻します。

2.3 「データ・コントロール」パネルでのデータバインドされたUIコンポーネントの作成

「データ・コントロール」パネルから項目をドラッグし、それを特定のUIコンポーネントとしてページ上にドロップすることで、データバインドされたユーザー・インタフェースを設計できます。データ・コントロールを使用してUIコンポーネントを作成すると、選択したデータ・コントロールにそのコンポーネントをバインドするために必要な、様々なコードおよびオブジェクトがJDeveloperによって自動的に作成されます。

「データ・コントロール」パネルでは、各データ・コントロール・オブジェクトが特定のアイコンで表されます。表2-1は、各アイコンが表すもの、「データ・コントロール」パネルの階層内で表示される場所、そのアイコンを使用して作成できるコンポーネントを示しています。

表2-1 「データ・コントロール」パネルのアイコンおよびオブジェクト階層

アイコン 名前 説明 作成できるコンポーネント

データ・コントロール・アイコン


データ・コントロール

データ・コントロールを表します。

他のオブジェクトのコンテナとして機能し、作成には使用されません。

コレクション・アイコン


コレクション

アクセッサ・メソッドまたは操作から返される名前付きデータ・コレクションを表します。

フォーム、表、グラフ、ツリー、レンジ・ナビゲーションの各コンポーネント、およびマスター/ディテール・コンポーネント。

データ・コントロール上のコレクションを使用してフォームを作成する方法の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の基本的なデータバインドされたページの作成に関する項を参照してください。

コレクションを使用して表を作成する方法の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたADF表の作成に関する項を参照してください。

マスター/ディテール関係を使用してUIコンポーネントを作成する方法の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のマスター/ディテール・データの表示に関する項を参照してください。

グラフ、チャート、およびその他の視覚化UIコンポーネントの作成については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたグラフおよびゲージ・コンポーネントの作成に関する項を参照してください。

構造化属性アイコン


構造化属性

Javaプリミティブ・タイプ(属性として示される)または任意のタイプのコレクションのいずれでもない、戻りオブジェクトを示します。

ラベル、テキスト・フィールド、日付、値リスト、および選択リストの各コンポーネント。

属性アイコン


属性

オブジェクト内の個別データ要素を表します(行内の属性など)。

ラベル、テキスト・フィールド、日付、値リスト、および選択リストの各コンポーネント。

属性を使用したページのフィールドの作成については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール属性を使用したテキスト・フィールドの作成に関する項を参照してください。

リストの作成については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされた選択リストとシャトルの作成に関する項を参照してください。

キー属性のアイコン


キー属性

データ・コントロール構造ファイル、またはビジネス・サービス自体で、主キー属性として宣言されたオブジェクト属性を表します。

ラベル、テキスト・フィールド、日付、値リスト、および選択リストの各コンポーネント。

メソッド・アイコン


メソッド

データ・コントロールのメソッドまたは操作、またはその公開された構造のいずれかを表し、パラメータの受入れや、ビジネス・ロジックの実行を行ったり、オプションで単一の値、構造、またはコレクションを戻したりすることができます。

コマンド・コンポーネント。

パラメータをとるメソッドの場合: コマンド・コンポーネントおよびパラメータ付きフォーム。

メソッドからのコマンド・コンポーネントの作成については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のコマンド・コンポーネントを使用したビュー・レイヤーの機能の呼出しに関する項を参照してください。

パラメータ化されたフォームの作成については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のパラメータを使用したフォームの作成に関する項を参照してください。

メソッド戻りのアイコン


メソッド戻り

メソッドまたはその他の操作から返されたオブジェクトを表します。返されるオブジェクトは、単一の値またはコレクションです。

メソッドの戻りオブジェクトは、それを返すメソッドの下の子として示されます。メソッド戻りの下に子として表示されるオブジェクトは、コレクションの属性、親コレクションに関連するアクションを実行する他のメソッド、または親コレクションで実行できる操作などです。

単一の値の場合: テキスト・フィールドおよび選択リスト。

コレクションの場合: フォーム、表、ツリー、レンジ・ナビゲーションの各コンポーネント。

単一値のメソッド戻りオブジェクトがドロップされた場合、メソッドはフレームワークによって自動的に起動されません。メソッドを起動するために、実行可能ファイルとして起動アクションを作成するか、対応するメソッドをボタンとしてドロップする必要があります。実行可能ファイルの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のページ定義ファイルで定義される実行可能ファイル・バインディング・オブジェクトに関する項を参照してください。

操作のアイコン


操作

親オブジェクト上でアクションを実行する組込みデータ・コントロール操作を表します。

ボタン、リンクおよびメニューなどのUIコマンド・コンポーネント。

詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータ・コントロール操作を使用したコマンド・コンポーネントの作成に関する項、および既存のレコードを編集するためのフォームの作成に関する項を参照してください。

パラメータのアイコン


パラメータ

パラメータが示されているメソッドまたは操作によって宣言されたパラメータ値を表します。

ラベル、テキストおよび選択リストの各コンポーネント。

名前付き基準のアイコン


名前付き基準

ユーザー検索フォームを作成できるメタデータ・ベースの問合せを表します。名前付き基準は、EJBおよび(JPAベースの) Beanデータ・コントロールに対して使用できます。

カスタム・ビュー基準を作成し、「データ・コントロール」パネルに追加できます。第7.6項「名前付き基準を使用した結果セットのフィルタリング」を参照してください。

検索フォーム。

検索フォームの作成については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたADF検索フォームの作成に関する項を参照してください。


2.3.1 「データ・コントロール」パネルの使用方法

JDeveloperは、ドロップするデータ・コントロール項目に対してそれぞれ選択できるUIコンポーネントの事前定義済セットを備えています。

始める前に:

「データ・コントロール」パネルの各種オブジェクトに関する知識があると役立つ場合があります。詳細は、第2.3項「「データ・コントロール」パネルでのデータバインドされたUIコンポーネントの作成」を参照してください。

次のタスクを完了する必要があります。

  • 第2.2.1項「ADFデータ・コントロールの作成方法」の説明に従って、データ・コントロールを作成します。

  • 『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のWebページの作成に関する項で説明されているとおりに、Webページを作成します。

「データ・コントロール」パネルを使用してUIコンポーネントを作成するには:

  1. 「データ・コントロール」パネルで項目を選択し、ページのビジュアル・エディタにその項目をドラッグします。パネルの各項目の定義は、表2-1を参照してください。


    ヒント:

    操作またはメソッドをタスク・フローのメソッド・アクティビティにドロップする必要がある場合は、ダイアグラム内のアクティビティにドラッグ・アンド・ドロップするだけです。


  2. 次に表示されるポップアップ・メニューから、UIコンポーネントを選択します。

    「データ・コントロール」パネルから項目をドラッグしてページにドロップすると、ドロップした項目に使用できるすべてのデフォルトUIコンポーネントのポップアップ・メニューが表示されます。表示されるコンポーネントは、プロジェクト内のライブラリに基づきます。

    図2-6は、「データ・コントロール」パネルのデータ・コレクションがページにドロップされる際に表示されるポップアップ・メニューを示しています。

    図2-6 「データ・コントロール」パネルからのコンポーネントのドロップ

    ポップアップ・メニューで選択されたADF表

    ポップアップ・メニューから選択したコンポーネントに応じて、そのコンポーネントの外観を定義するためのダイアログがJDeveloperで表示されます。たとえば、ポップアップ・メニューから「ADF表」を選択すると、「表の列の編集」ダイアログが表示されます。

    デフォルトで選択されたUIコンポーネントはまず、対応するビジネス・オブジェクト上で設定されているUIコントロール・ヒントで決定されます。コントロール・ヒントが設定されていない場合、JDeveloperでは標準のフォームおよび表の入力コンポーネントと読取り専用のフォームおよび表の出力コンポーネントが使用されます。リストのコンポーネントは、データ・コントロール・オブジェクトをドロップするときに選択するリストの型に基づいて決定されます。

    コンポーネントを選択すると、JDeveloperではビジュアル・エディタのページにそのUIコンポーネントが挿入されます。たとえば、「データ・コントロール」パネルからコレクションをドラッグして、ポップアップ・メニューから「ADF表」を選択した場合は、図2-7のように、ビジュアル・エディタに表が表示されます。

    図2-7 データバインドされたUIコンポーネント: ADF表

    データバインドされたUIコンポーネントの例

    デフォルトでは、データ・コントロールの使用時に作成されるUIコンポーネントは、ADFデータ・コントロール内の属性にバインドされ、次のような組込み機能を装備できます。

    • データバインド・ラベル

    • ツールチップ

    • 書式設定

    • 基本的なナビゲーション・ボタン

    • 検証規則が特定の属性にアタッチされている場合、検証。

    デフォルトのコンポーネントは、そのまま使用しても十分機能します。ただし、特定のニーズに合せて変更することができます。それぞれのコンポーネントとその各種機能については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたWebユーザー・インタフェースの作成に関する項を参照してください。


    ヒント:

    ページで使用するADFデータバインド・コンポーネントのタイプを変更する場合は、ビジュアル・エディタまたは構造ウィンドウを使用してそのコンポーネントを削除し、「データ・コントロール」パネルから新しいコンポーネントをドラッグ・アンド・ドロップする方法が最も簡単です。データバインドされたコンポーネントをページから削除するときにビジュアル・エディタまたは構造ウィンドウを使用する場合、ページ定義ファイルの関連するバインディング・オブジェクトが他のどのコンポーネントからも参照されていなければ、これらのバインディング・オブジェクトはJDeveloperによって自動的に削除されます(ソース・エディタを使用する場合は、バインディング・オブジェクトの自動削除は行われません)。


2.3.2 「データ・コントロール」パネルの使用時の処理

「データ・コントロール」パネルを使用してWebアプリケーションを構築すると、JDeveloperによって次の処理が行われます。

  • DataBindings.cpxファイルがプロジェクトのデフォルト・パッケージに作成されます(このファイルが存在しない場合のみ)。また、そのページ用にエントリが追加されます。

    DataBindings.cpxファイルは、アプリケーションのバインディング・コンテキストを定義します。バインディング・コンテキストはコンテナ・オブジェクトの1つで、使用可能なデータ・コントロールおよびデータ・バインディング・オブジェクトのリストを含みます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の実行時に行われる処理: バインディング・コンテキストの動作に関する項を参照してください。DataBindings.cpxファイルによって、個々のページがページ定義ファイルに含まれるバインディング定義にマップされ、これらのページが使用するデータ・コントロールが登録されます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のDataBindings.cpxファイルの操作に関する項を参照してください。

  • META-INFディレクトリにadfm.xmlファイルが作成されます。このファイルにより、DataBindings.cpxファイルのレジストリが作成され、バインディング・コンテキストを作成できるように、実行時にアプリケーションで特定できます。

  • web.xmlファイルにADFバインディング・フィルタが登録されます。

    ADFバインディング・フィルタにより、バインディング・コンテキストへのアクセスが必要なHTTPリクエストが、すべて処理されます。バインディング・フィルタ構成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFバインディング・フィルタの構成に関する項を参照してください。

  • ビュー・プロジェクトにいくつかのライブラリを追加します。たとえば、次のライブラリがあります。

    • ADF Facesデータバインディング・ランタイム

    • ADFモデル・ランタイム

    • MDSランタイム

  • パッケージ定義ファイルがページ定義サブパッケージに追加されます(ページに対してファイルが存在しない場合)。デフォルトのサブパッケージは、adfmsrcディレクトリにあるview.pageDefsです。


    ヒント:

    パッケージ構成(名前と場所など)は、「プロジェクト・プロパティ」ダイアログ(プロジェクト・ノードをダブルクリックするとアクセスできる)の「ADFモデル」設定ページで設定できます。


    ページ定義ファイル(pageNamePageDef.xml)は、アプリケーションのビュー・レイヤーにある各ページのADFバインディング・コンテナを定義します。バインディング・コンテナでは、ページのすべてのADFバインディング・オブジェクトへのランタイム・アクセスが行われます。ページ定義ファイルの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のページ定義ファイルの操作に関する項を参照してください。


    ヒント:

    現在のバインディング・コンテナは、プログラム的なアクセス用のAdfContextからも入手できます。


  • ページで参照されるバインディング・オブジェクトの定義の追加も含めて、ページ定義ファイルが構成されます。

  • ページに指定のコンポーネントを追加します。

    これらの事前作成済のコンポーネントには、ページ定義ファイルのバインディング・オブジェクトを参照するADFデータ・バインディング式言語(EL)式が含まれます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFデータ・バインディングEL式の作成に関する項を参照してください。

  • UIコンポーネントが必要とするすべてのライブラリ、ファイル、および構成要素が追加されます。データバインドされたADF Facesコンポーネントに必要なアーティファクトの詳細は、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の付録「ADF Faces構成」を参照してください。

2.3.3 イテレータの結果のキャッシュに関する必知事項

データ・コントロールでコレクションを変更する場合、変更されていることがADFモデル・レイヤーで認識されるよう、データ・コントロールでコレクションの新規インスタンスをインスタンス化する必要があります。つまり、クライアントのアクションによってコレクションが変更されることがありますが、コレクションの新規インスタンスを作成しないかぎり、その変更はUIに反映されないということです。ただし、パフォーマンス上の理由から、アクセッサとメソッド・イテレータでは結果セットがキャッシュされます(デフォルトでは、イテレータのcacheResults属性はtrueに設定されています)。この設定は、ページが初めてレンダリングされるときにイテレータがリフレッシュされ、コレクションの新規インスタンスが作成されることを意味します。部分ページ・レンダリングを使用したページのリフレッシュやページに戻るユーザー・ナビゲーションなどのページの再アクセス時、イテレータはリフレッシュされません。

たとえば、ページで表のソートが可能であるとします。ソート後にページをリフレッシュする必要があるため、部分ページ・レンダリングを使用して表をリフレッシュする、ソート・イベント用のコードをリスナーに追加します(詳細は、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「部分的なページ・コンテンツのレンダリング」の章を参照してください)。表のコレクションのインスタンスはすでにインスタンス化され、キャッシュされているため、アクセッサ・イテレータは再実行されません。このため、新しいソート順のコレクションの新規インスタンスは作成されず、ページ上のソート順は同じままになります。

この問題に対処するには、結果をキャッシュしないようイテレータを構成するか、ページのリフレッシュ時にイテレータの再実行に使用できるボタンをページに配置します。


注意:

ページでナビゲーション操作を使用してコレクション内を移動する場合、CacheResultsをfalseに設定しないでください。ナビゲーションが機能しなくなります。ボタンを使用してイテレータを再実行する必要があります。ナビゲーション操作の使用の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のフォームへのレンジ・ナビゲーションの組込みに関する項を参照してください。


2.3.3.1 結果セットをキャッシュしないようにするイテレータの設定

結果セットをキャッシュしないようイテレータを設定する手順:

  1. ページ定義ファイルを開き、結果をキャッシュしないイテレータを「構造」ウィンドウで選択します。

  2. 「プロパティ」ウィンドウで、「拡張」セクションを展開して、CacheResultsのドロップダウン・リストから「false」を選択します。

2.3.3.2 ボタンを使用したイテレータの再実行

ボタンを使用してイテレータを再実行する手順:

  1. 「コンポーネント」ウィンドウの「ADF Faces」ページで、「一般コントロール」パネルを展開し、ボタンをページにドラッグします。

  2. 「構造」ウィンドウで、ボタンを右クリックして「ADFコントロールにバインド」を選択します。

  3. 「ADFコントロールにバインド」ダイアログで、再実行するイテレータに関連付けられているコレクションを展開し、コレクションの「操作」ノードを展開して「実行」を選択します。