プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle ADFデータ・コントロールによるアプリケーションの開発
12c (12.2.1.3.0)
E90373-01
目次へ移動
目次

前
次
次へ

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

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

この章の構成は、次のとおりです。

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

JDeveloperでは、ビジネス・サービスに基づくデータ・コントロールを公開して、それをアプリケーション・ユーザー・インタフェースで使用するためのサポートが組み込まれており、データ・コントロールに基づくアプリケーションの構築が簡略化されます。

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

  • JDeveloperでのアプリケーション・ワークスペースの作成: ウィザードを使用して、選択したテクノロジに必要なライブラリと構成がJDeveloperによって自動的に追加され、アプリケーションがパッケージとディレクトリを含むプロジェクトに構造化されます。アプリケーション・ワークスペースの作成の詳細は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。

  • ビジネス・サービスの作成: ビジネス・サービスは、ADFビジネス・コンポーネント、EJBセッションBean、POJO、Webサービス、またはその他のサービスです。ビジネス・サービスの作成の詳細は、『Oracle JDeveloperによるアプリケーションの開発』のEJBおよびJPAコンポーネントによる開発に関する項を参照してください。

  • サービスのデータ・コントロールの作成: ビジネス・サービスを作成したら、メタデータ・インタフェースを使用してこれらのサービスの実装を抽象化し、使用されるプロパティ、メソッドおよびタイプに関する情報などの操作とデータ・コレクションを表すデータ・コントロールを作成します。これらのデータ・コントロールは「データ・コントロール」パネルに表示され、これらをページにドラッグしてデータバインドされたUIコンポーネントを作成できます。サービスのデータ・コントロールの作成の詳細は、「データ・コントロールを使用したビジネス・サービスの公開」を参照してください。

  • データ・コントロールへの宣言的なメタデータの追加: データ・コントロールにUIヒント、検証ルール、検索フォームでの使用条件やその他の機能を追加できます。データ・コントロールへのビジネス・ロジックの追加の詳細は、「データ・コントロールへのビジネス・ロジックの追加」を参照してください。

  • ユーザー・インタフェースの実装: JDeveloperの「データ・コントロール」パネルには、アプリケーションのサービスが表示されます。オブジェクトを「データ・コントロール」パネルからページにドラッグし、ベースとなるデータを表示するUIコンポーネントを選択できます。データバインドされていないUIコンポーネントの場合、「コンポーネント」ウィンドウを使用してコンポーネントをドラッグ・アンド・ドロップします。JDeveloperによって、すべてのページ・コードが作成されます。

    データバインドされたWebページの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データバインドされたWebユーザー・インタフェースの作成」を参照してください。

    ユーザー・インタフェースを作成する際に、アプリケーション内のユーザーのワークフローを整理するタスク・フローも定義する必要が生じることがあります。タスク・フローの作成の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFタスク・フローの作成に関する項を参照してください。

    UIコンポーネント自体の詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のJSFによるユーザー・インタフェースの実装に関する項を参照してください。

  • アプリケーションのデプロイ: ウィザードとエディタを使用して、デプロイメント・ディスクリプタ、JARファイルおよびアプリケーション・サーバー接続を作成します。アプリケーションのデプロイの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のFusion Webアプリケーションのデプロイに関する項を参照してください。

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

JDeveloperでは、「データ・コントロールの作成」メニュー・アイテムを使用して、セッションBeanのデータ・コントロールを作成できます。サービスおよびバインディングを概要エディタに表示するデータ・コントロール定義ファイルがJDeveloperで自動的に作成されるため、アプリケーションの作成プロセスが簡略化されます。

アプリケーションのサービスの準備ができたら、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アプリケーションの開発』の「アプリケーション・モジュールによるビジネス・サービスの実装」を参照してください。

始める前に:

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

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

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

  1. アプリケーション・ワークスペース内でデータ・モデル・プロジェクトの最上位ノードを右クリックして、「新規」を選択し、「ギャラリから」を選択します。
  2. 「新規ギャラリ」で、「ビジネス層」を展開し、「データ・コントロール」を選択して、作成するデータ・コントロールのタイプを選択し、「OK」をクリックします。
  3. ウィザードの残りのステップを完了します。

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

注意:

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

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

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

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

2.2.2.1 DataControls.dcxの概要エディタ

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

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

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

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

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

図2-1の説明が続きます
「図2-1 概要エディタでのDataControls.dcxファイル」の説明

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

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

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

図2-2の説明が続きます
「図2-2 「データ・コントロール」パネル」の説明

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

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

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

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

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

図2-3の説明が続きます
「図2-3 「データ・コントロール」パネルの主要ノード」の説明

ヒント:

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

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

注意:

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

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

図2-4の説明が続きます
「図2-4 返されるコレクションの子ノード」の説明

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

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

図2-5の説明が続きます
「図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コンポーネントの作成

JDeveloperでは、「データ・コントロール」パネルを使用して、データバインドされたユーザー・インタフェースを設計できます。また、アイテムをドラッグ・アンド・ドロップしてページを作成できます。JDeveloperにより、選択したデータ・コントロールにコンポーネントをバインドするために必要なコードとオブジェクトが自動的に作成されます。

「データ・コントロール」パネルから項目をドラッグし、それを特定の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アプリケーションの開発』のページ定義ファイルで定義されるExecutableバインディング・オブジェクトに関する項を参照してください。

「操作」アイコン

操作

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

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

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

「パラメータ」アイコン

パラメータ

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

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

「名前付き基準」アイコン

名前付き基準

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

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

検索フォーム。

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

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

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

始める前に:

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

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

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

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

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

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

    ヒント:

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

  2. ポップアップ・メニューから、UIコンポーネントを選択します。

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

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

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

    図2-6の説明が続きます
    「図2-6 「データ・コントロール」パネルからのコンポーネントのドロップ」の説明

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

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

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

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

    図2-7の説明が続きます
    「図2-7 データバインドされたUIコンポーネント: ADF表」の説明

    デフォルトでは、データ・コントロールの使用時に作成される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)式が含まれます。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コントロールにバインド」ダイアログで、再実行するイテレータに関連付けられているコレクションを展開し、コレクションの「操作」ノードを展開して「実行」を選択します。