この章では、ビジネス・サービスを抽象化するためにデータ・コントロールを作成し、「データ・コントロール」パネルを使用してデータバインドされたページを作成する方法を説明します。また、宣言的なバインディングを設計時に指定し、実行時に実装する方法についての説明もあります。
この章の内容は、次のとおりです。
大まかに述べると、データ・コントロールを組み込んだアプリケーションの宣言的開発プロセスには、次のような中心となるステップが含まれます。
JDeveloperでのアプリケーション・ワークスペースの作成: ウィザードを使用して、選択したテクノロジに必要なライブラリと構成がJDeveloperによって自動的に追加され、アプリケーションがパッケージとディレクトリを含むプロジェクトに構造化されます。詳細は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。
ビジネス・サービスの作成: ビジネス・サービスは、ADFビジネス・コンポーネント、EJBセッションBean、POJO、Webサービス、またはその他のサービスです。JDeveloperを使用したこれらのサービスの開発の詳細は、『Oracle JDeveloperによるアプリケーションの開発』を参照してください。
サービスのデータ・コントロールの作成: ビジネス・サービスを作成したら、メタデータ・インタフェースを使用してこれらのサービスの実装を抽象化し、使用されるプロパティ、メソッドおよびタイプに関する情報などの操作とデータ・コレクションを表すデータ・コントロールを作成します。これらのデータ・コントロールは「データ・コントロール」パネルに表示され、これらをページにドラッグしてデータバインドされたUIコンポーネントを作成できます。詳細は、第2.2項「データ・コントロールを使用したビジネス・サービスの公開」を参照してください。
データ・コントロールへの宣言的なメタデータの追加: データ・コントロールにUIヒント、検証ルール、検索フォームでの使用条件やその他の機能を追加できます。詳細は、第7章「データ・コントロールへのビジネス・ロジックの追加」を参照してください。
ユーザー・インタフェースの実装: 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アプリケーションのデプロイに関する項を参照してください。
アプリケーションのサービスの準備ができたら、JDeveloperを使用して、UIコンポーネントとサービスとの宣言的バインドに必要な情報を提供するデータ・コントロールを作成できます。
たとえば、Java EEアプリケーションでは、通常、データベース内の表を表すエンティティBeanを作成し、全EJBに対するセッション・ファサードを作成します。このファサードは、ベースとなるエンティティへの一元化されたインタフェースです。Oracle ADFアプリケーションでは、セッションBeanに対するデータ・コントロールを作成でき、そのデータ・コントロールには、セッションBean下のすべてのEJBに関する記述が含まれます。
データ・コントロールの生成には、「データ・コントロールの作成」メニュー・アイテムを使用します。データ・コントロールは、1つ以上のXMLメタデータ・ファイルで構成され、これらのファイルでは、実行時にバインディングと連動するサービスの機能が定義されます。データ・コントロールは、基礎となるサービスと連動します。
アダプタ・ベースのデータ・コントロールは、JDeveloperの「アプリケーション」ウィンドウ内で作成します。
注意: ADFビジネス・コンポーネントをベースとするアプリケーションの場合、データ・コントロールはアプリケーション・モジュールを作成する際に自動的に作成されます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のアプリケーション・モジュールによるビジネス・サービスの実装に関する項を参照してください。 |
始める前に:
データ・コントロール使用の一般的な知識があると役立ちます。詳細は、第2.2項「データ・コントロールを使用したビジネス・サービスの公開」を参照してください。
次のタスクを完了する必要があります。
データ・コントロールを作成する手順は、次のとおりです。
アプリケーション・ワークスペース内でデータ・モデル・プロジェクトの最上位ノードを右クリックして、「新規」を選択し、「ギャラリから」を選択します。
「新規ギャラリ」で、「ビジネス層」を展開し、「データ・コントロール」を選択して、作成するデータ・コントロールのタイプを選択し、「OK」をクリックします。
ウィザードの残りのステップを完了します。
アダプタ・ベースのデータ・コントロールの作成については、各種のデータ・コントロールについて説明している、このガイドの後続の章を参照してください。
注意: 場合によっては、データ・コントロールの基礎にするクラスまたはオブジェクトを右クリックし、「データ・コントロールの作成」を選択することによってデータ・コントロールを作成できます。 |
データ・コントロールを作成する際に、JDeveloperによってデータ・コントロール定義ファイル(DataControls.dcx
)が作成され、概要エディタでファイルが開き、ファイルの階層が「データ・コントロール」パネルに表示されます。このファイルにより、データ・コントロールがサービスおよびバインディングと直接連動して動作することが可能になります。
エディタ・ウィンドウの「ソース」タブをクリックすることによって、対応するXMLファイルからのコードを表示できます。
DataControls.dcx
ファイルの概要エディタは、データ・コントロール・オブジェクトの階層と、データ・モデルの公開メソッドを表示します。
概要エディタおよび「データ・コントロール」パネルで使用されるアイコンの説明は、表2-1を参照してください。
データ・コントロール・オブジェクトの設定を変更するには、オブジェクトを選択し、「編集」アイコンをクリックします。データ・コントロールの編集方法の詳細は、7.2項「データ・コントロールの構成」を参照してください。
図2-1は、EJBデータ・コントロールの概要エディタを示しています。
「データ・コントロール」パネルはパレットとして機能し、ノードを「データ・コントロール」パネルからWebページのデザイン・エディタにドラッグすることにより、データバインドされたUIコンポーネントを作成できます。データ・コントロールを作成した後、「データ・コントロール」パネルが「アプリケーション」ウィンドウに表示されます。図2-2は、EJBデータ・コントロールの「データ・コントロール」パネルを示しています。
「データ・コントロール」パネルには、アプリケーションのビジネス・サービスに対して作成されたすべてのデータ・コントロールがリストされます。また、UIコンポーネントへのバインドに使用できるコレクション(データ・オブジェクトの行セット)、属性、メソッド、および組込み操作の階層が公開されます。
たとえば、図2-3はOrdersSessionEJBLocal
データ・コントロールを表示する「データ・コントロール」パネルを示しています。コレクション・ノード(customerFindAll
、customerFindById
、empFindAll
など)は、問合せメソッド(この例では、セッション・ファサードのgetterメソッド)から返されるデータ・コレクションを表します。これらのコレクション・オブジェクトをページにドロップして、フォームや表などのUIコンポーネントを作成できます。
その他のサービス・メソッド(JPAベースのデータ・コントロールの場合は、先頭にget
が付いていないメソッド)は、メソッド・アイコンによって表示されます。これらのオブジェクトは、コマンド・ボタンまたはリンクとしてフォームにドロップできます。メソッドが引数をとる場合、その引数は、メソッドのノード内にネストされたパラメータとして「パラメータ」ノードに表示されます。メソッドから返されるオブジェクトも表示されます。
ヒント: 「データ・コントロール」パネルが表示されない場合は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データ・コントロール」パネルを開く方法に関する項を参照してください。 |
返されるオブジェクトはそれぞれ、関連したオブジェクトに対して定義された属性、メソッド、およびネストされたコレクションを表示します。図2-4は、itemFindAll
コレクションから返されるアイテム
Beanに対して定義された属性とメソッドを示しています。
注意: データ・コントロールの基礎となるサービスが変更されると、これらの変更はデータ・コントロールに反映されます。サービスに対する変更が「データ・コントロール」パネルにすぐ反映されない場合は、パネルを手動でリフレッシュできます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』の「データ・コントロール」パネルをリフレッシュする方法に関する項を参照してください。 |
データ・コントロール・タイプに応じて、様々な組込み操作が公開されます。一部のデータ・コントロールでは、宣言的な名前付き基準も使用でき、これを使用して検索フォームを作成できます。図2-5は、EJBデータ・コントロールの操作とデフォルトの名前付き基準を示しています。
データ・コントロール・フレームワークは、データ・コントロールの標準操作のセットを定義します。これらの操作は、基礎となるビジネス・サービスの機能を使用して実装されます。実行時に、これらのデータ・コレクション操作の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
: 現在のトランザクションのコンテキスト内でのすべての変更を元に戻します。
「データ・コントロール」パネルから項目をドラッグし、それを特定の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検索フォームの作成に関する項を参照してください。 |
JDeveloperは、ドロップするデータ・コントロール項目に対してそれぞれ選択できるUIコンポーネントの事前定義済セットを備えています。
始める前に:
「データ・コントロール」パネルの各種オブジェクトに関する知識があると役立つ場合があります。詳細は、第2.3項「「データ・コントロール」パネルでのデータバインドされたUIコンポーネントの作成」を参照してください。
次のタスクを完了する必要があります。
第2.2.1項「ADFデータ・コントロールの作成方法」の説明に従って、データ・コントロールを作成します。
『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のWebページの作成に関する項で説明されているとおりに、Webページを作成します。
「データ・コントロール」パネルを使用してUIコンポーネントを作成するには:
「データ・コントロール」パネルで項目を選択し、ページのビジュアル・エディタにその項目をドラッグします。パネルの各項目の定義は、表2-1を参照してください。
ヒント: 操作またはメソッドをタスク・フローのメソッド・アクティビティにドロップする必要がある場合は、ダイアグラム内のアクティビティにドラッグ・アンド・ドロップするだけです。 |
ポップアップ・メニューから、UIコンポーネントを選択します。
「データ・コントロール」パネルから項目をドラッグしてページにドロップすると、ドロップした項目に使用できるすべてのデフォルトUIコンポーネントのポップアップ・メニューが表示されます。表示されるコンポーネントは、プロジェクト内のライブラリに基づきます。
図2-6は、「データ・コントロール」パネルのデータ・コレクションがページにドロップされる際に表示されるポップアップ・メニューを示しています。
ポップアップ・メニューから選択したコンポーネントに応じて、そのコンポーネントの外観を定義するためのダイアログが自動的に表示されます。たとえば、ポップアップ・メニューから「ADF表」を選択すると、「表の列の編集」ダイアログが表示されます。
デフォルトで選択されたUIコンポーネントはまず、対応するビジネス・オブジェクト上で設定されているUIヒントで決定されます。UIヒントが設定されていない場合、JDeveloperでは標準のフォームおよび表の入力コンポーネントと読取り専用のフォームおよび表の出力コンポーネントが使用されます。リストのコンポーネントは、データ・コントロール・オブジェクトをドロップするときに選択するリストの型に基づいて決定されます。
コンポーネントを選択すると、JDeveloperではビジュアル・エディタのページにそのUIコンポーネントが挿入されます。たとえば、「データ・コントロール」パネルからコレクションをドラッグして、ポップアップ・メニューから「ADF表」を選択した場合は、図2-7のように、ビジュアル・エディタに表が表示されます。
デフォルトでは、データ・コントロールの使用時に作成されるUIコンポーネントは、ADFデータ・コントロール内の属性にバインドされ、次のような組込み機能を装備できます。
データバインド・ラベル
ツールチップ
書式設定
基本的なナビゲーション・ボタン
検証(検証規則が特定の属性にアタッチされている場合。)
デフォルトのコンポーネントは、そのまま使用しても十分機能します。ただし、特定のニーズに合せて変更することができます。それぞれのコンポーネントとその各種機能については、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のデータバインドされたWebユーザー・インタフェースの作成に関する項を参照してください。
ヒント: ページで使用するADFデータバインド・コンポーネントのタイプを変更する場合は、ビジュアル・エディタまたは構造ウィンドウを使用してそのコンポーネントを削除し、「データ・コントロール」パネルから新しいコンポーネントをドラッグ・アンド・ドロップする方法が最も簡単です。データバインドされたコンポーネントをページから削除するときにビジュアル・エディタまたは構造ウィンドウを使用する場合、ページ定義ファイルの関連するバインディング・オブジェクトが他のどのコンポーネントからも参照されていなければ、これらのバインディング・オブジェクトはJDeveloperによって自動的に削除されます(ソース・エディタを使用する場合は、バインディング・オブジェクトの自動削除は行われません)。 |
「データ・コントロール」パネルを使用して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モデル設定ページで、パッケージ構成(名前と場所など)を設定できます。 |
ページ定義ファイル(pageName
PageDef.xml
)は、アプリケーションのビュー・レイヤーにある各ページのADFバインディング・コンテナを定義します。バインディング・コンテナでは、ページのすべてのADFバインディング・オブジェクトへのランタイム・アクセスが行われます。ページ定義ファイルの詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のページ定義ファイルの操作に関する項を参照してください。
ヒント: 現在のバインディング・コンテナは、プログラム的なアクセス用の |
ページ定義ファイルが構成されます。この処理では、ページによって参照されるバインディング・オブジェクトの定義も追加されます。
ページに指定のコンポーネントを追加します。
これらの事前作成済のコンポーネントには、ページ定義ファイルのバインディング・オブジェクトを参照するADFデータ・バインディング式言語(EL)式が含まれます。詳細は、『Oracle Application Development FrameworkによるFusion Webアプリケーションの開発』のADFデータ・バインディングEL式の作成に関する項を参照してください。
UIコンポーネントが必要とするすべてのライブラリ、ファイル、および構成要素が追加されます。データバインドされたADF Facesコンポーネントに必要なアーティファクトの詳細は、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の付録「ADF Faces構成」を参照してください。
データ・コントロールでコレクションを変更する場合、変更されていることがADFモデル・レイヤーで認識されるよう、データ・コントロールでコレクションの新規インスタンスをインスタンス化する必要があります。つまり、クライアントのアクションによってコレクションが変更されることがありますが、コレクションの新規インスタンスを作成しないかぎり、その変更はUIに反映されないということです。ただし、パフォーマンス上の理由から、アクセッサとメソッド・イテレータでは結果セットがキャッシュされます(デフォルトでは、イテレータのcacheResults
属性はtrue
に設定されています)。この設定は、ページが初めてレンダリングされるときにイテレータがリフレッシュされ、コレクションの新規インスタンスが作成されることを意味します。部分ページ・レンダリングを使用したページのリフレッシュやページに戻るユーザー・ナビゲーションなどのページの再アクセス時、イテレータはリフレッシュされません。
たとえば、ページで表のソートが可能であるとします。ソート後にページをリフレッシュする必要があるため、部分ページ・レンダリングを使用して表をリフレッシュする、ソート・イベント用のコードをリスナーに追加します(詳細は、『Oracle ADF FacesによるWebユーザー・インタフェースの開発』の「部分的なページ・コンテンツのレンダリング」の章を参照してください)。表のコレクションのインスタンスはすでにインスタンス化され、キャッシュされているため、アクセッサ・イテレータは再実行されません。このため、新しいソート順のコレクションの新規インスタンスは作成されず、ページ上のソート順は同じままになります。
この問題に対処するには、結果をキャッシュしないようイテレータを構成するか、ページのリフレッシュ時にイテレータの再実行に使用できるボタンをページに配置します。
注意: ページでナビゲーション操作を使用してコレクション内を移動する場合、 |
結果セットをキャッシュしないようイテレータを設定する手順:
ページ定義ファイルを開き、結果をキャッシュしないイテレータを「構造」ウィンドウで選択します。
「プロパティ」ウィンドウで、「拡張」セクションを展開して、CacheResultsのドロップダウン・リストから「false」を選択します。