ヘッダーをスキップ
Oracle Application Development Framework開発ガイドライン・マニュアル
10gリリース2(10.1.2) 
B15737-02
  目次
目次

戻る
戻る
次へ
次へ
 

6 ビュー・テクノロジにおけるOracle ADFデータ・バインディングの概要

ビュー・テクノロジにおけるデータ・バインディングとは、バックエンドのビジネス・サービス内のデータにバインドされたUIコンポーネントを作成する機能のことです。Oracle Application Development Framework(Oracle ADF)では、Oracle ADFモデル・レイヤーのオブジェクトによってデータ・バインディングが行われます。このOracle ADFバインディング・オブジェクトへは、実行時にWebアプリケーションおよびJavaクライアント・アプリケーションからアクセス可能です。アプリケーションでは、ビジネス・サービスのデータと、バインディング・オブジェクトをUIコンポーネントとしてレンダリングする方法を定義するメタデータによって、バインディング・オブジェクトがインスタンス化されます。

開発者がビュー・レイヤーを作成する際には、JDeveloperの設計時ツールを使用することでデータ・バインドされたクライアント作成のタスクを単純化できます。クライアント開発者は、コードを記述することなく、データ・バインドされたWebページとJavaクライアントを組み立てることが可能です。JDeveloperの設計時に、Oracle ADFモデル・レイヤーを併用することで、クライアント設計作業がサポートされます。

この章では、Oracle ADFと様々なビュー・テクノロジの統合について、概要を説明します。

6.1 要約

6.2 ビュー・レイヤーの役割

ビュー・レイヤーは、J2EEアプリケーションのうち、アプリケーションのエンド・ユーザーが操作をする部分です。

総合すると、これらのアプリケーションに対するビュー・レイヤーの役割は次のとおりです。

JDeveloperでJ2EEアプリケーションを作成する際には、設計時ツールを使用することでデータ・バインドされたクライアント作成のタスクを単純化できます。クライアント開発者は、コードを記述することなく、データ・バインドされたWebページとJavaクライアントを組み立てることが可能です。JDeveloperの設計時に、Oracle ADFモデル・レイヤーを併用することで、クライアント設計作業がサポートされます。Oracle ADFモデル・レイヤーの中身を理解していなくても、クライアント開発者は、選択されたビジネス・サービス内のアクションおよびデータにアクセスするUIコンポーネントを挿入できます。JDeveloperでは、データ・バインドされたクライアントの作成手順は、サポートされている次のクライアント・テクノロジすべてに共通です。

6.2.1 JSPページとUIX XML文書の違い

UIX XMLは、Oracle ADF UIXの多様なコンポーネントを使用してWebアプリケーションのユーザー・インタフェースを定義するためのXML言語です。UIX XML文書のファイル拡張子は .uixで、Webアプリケーションの1つのページのレイアウト、ナビゲーションおよびコンテンツを定義するUIXコンポーネントが宣言的に記述されます。実行時には、UIXサーブレットがUIX XML文書を解析し、ページをリクエストしたブラウザまたはデバイスに対し、適切な出力をレンダリングします。

JDeveloperでは、UIXビジュアル・エディタを使用して、UIXユーザー・インタフェース・コンポーネントを追加および調整しながらUIX Webページを視覚的に作成し、その後でアプリケーションをテストおよび実行できます。JDeveloperには個々のUIXページを構築するためのウィザードもあり、またUIX XMLテンプレート(UIT)・ファイルを使用すればより短時間での開発が可能です。さらに、UIXはOracle ADFの一部であるため、様々なビジネス・ソースのデータ・バインディングをサポートします。

JavaServer Pages(JSP)はJavaサーブレットに基づくテクノロジで、Javaサーブレット同様にサーバー・サイド・テクノロジです。JSPページとサーブレットの主な違いは、JSPページでは静的なページ表示と動的なコンテンツ生成が分離されている点です。JSP Webページの設計者は、次のものを使用します。

  • HTMLタグ: 動的に生成されるWebページを設計および書式設定します。

  • JSP標準タグまたはJavaベースのスクリプトレット: ページ上に動的なコンテンツを生成する他のコンポーネントをコールします。

  • カスタム・タグ・ライブラリのJSPタグ: ページ上に動的なコンテンツを生成します。

UIX JSPが提供するタグ・ライブラリは、JSP1.2準拠のタグ・ライブラリの一連のタグを介してUIXコンポーネントを起動します。JSPタグはHTMLを生成し、タブ、ボタン、表、ヘッダーおよびその他のレイアウトやナビゲーション用コンポーネントをレンダリングします。

JSPページの拡張子は .jspです。この拡張子の付いたページは、WebサーバーではJSPコンテナによって処理されます。JSPコンテナはJSPタグおよびスクリプトレットを解析し、必要なコンテンツを生成し、HTMLまたはXMLページとしてクライアントに送信します。

JDeveloperでは、両方のテクノロジに対して、データ・バインディング、タグ・インサイトおよびその他の編集機能を提供します。

主な違いは次のとおりです。

  • UIX JSPはUIX UIコンポーネントのサブセットへのJSPインタフェースであるため、UIX XMLの方がより多くの機能を提供します。JSPタグが実装するのは、UIX要素の一部および属性の一部のみです。

  • UIX XMLの方が、より強力なテンプレート機能を提供します。JDeveloperで独自のテンプレートを作成し、そのテンプレートをベースにしてアプリケーション・ページを構築できます。

6.3 JDeveloperとOracle ADFモデル・レイヤーの設計時統合

クライアント開発者は、データ・コントロール・パレットを使用して、データ・バインドされたHTML要素(JSPページ用)、データ・バインドされたOracle ADF UIX要素(UIX XMLページ用)、およびデータ・バインドされたSwing UIコンポーネント(JClientパネル用)を作成します。データ・コントロール・パネルには、次の2つの選択リストがあります。

また、Webアプリケーション開発者の場合、データ・コントロール・パレットを使用してビジネス・サービスが提供するメソッドを選択し、Strutsページ・フローのデータ・ページおよびデータ・アクション上にドロップできます。

6.3.1 データ・コントロール・パレットの使用方法

クライアント文書の場合、表示されるビジネス・サービスの階層構造は、次の要素によって決まります。

  • どのビジネス・サービスを、モデル・プロジェクト内のデータ・コントロールに登録したか。パレットには、登録した次のビジネス・サービスごとに別のルート・ノードが表示されます。

    • Oracle Business Componentsアプリケーション・モジュール

    • EJB Session Bean

    • TopLinkマッピング・ベースのBean

    • 標準のJavaBeansクラス

    • Webサービス

  • Beanの設計時記述ファイル。Bean用のデータ・コントロールを作成したときに .xml定義ファイルに生成されます。BeanのXML定義は、そのBeanのプロパティ・アクセッサとメソッドを、以降に記載する様々なカテゴリに分類します。


    注意:

    Oracle ADF BCの場合、モデル・プロジェクト内のOracle ADF BCアプリケーション・モジュールは自動的にデータ・コントロールとして公開されます。メタデータ・ファイルにはOracle ADF BCデータ・コントロールで必要な情報が最初から含まれているため、モデル・プロジェクトを作成する際には他のXML定義ファイルは必要ありません。Webサービスの場合、Beanは使用されないため、XML定義にはWebサービスが公開するメソッドのみが記述されます。

設計時には、データ・コントロール・パレットを使用して、まずクライアント・ユーザー・インタフェースのレイアウトとOracle ADFバインディングの準備を行います。ビジネス・オブジェクトを選択し、サービス用のビジュアル要素を選択してページにドロップすると、次の項目が生成されます。

  • ビジュアル要素。クライアント文書内のバインディングにアクセスするためのソース・コード(JSPページのHTMLとタグ、UIX XMLページのUIXコンポーネント、またはJClientで生成されたパネルおよびフォームのJavaメソッド・コール)によって定義されます。

  • バインディング・コンテナ(ページ用のコンテナがまだない場合)。バインディング・コンテナはXMLファイルで、現在プロジェクトのデフォルト・パッケージに設定されているパッケージに対応するディレクトリに作成されます。(デフォルト・パッケージを変更するには、アプリケーション・ナビゲータでプロジェクト・ノードを選択してプロパティ・インスペクタを表示し、defaultPackageプロパティを設定します。)

  • ビジュアル要素をサポートするための適切なバインディング定義。バインディング定義はバインディング・コンテナに追加されます。

バインディングは、データ・コントロール・パレットからドラッグ・アンド・ドロップしなくても、後でソース・コードで参照するJDeveloper構造ウィンドウでも作成できます。

データ・コントロール・パレットがクライアント文書に生成するコード、およびそのコードが作成するバインディングは、次の内容によって決まります。

  • ビジュアル・エディタに表示されている文書のタイプ(JSPページ、UIXページ、またはJClient生成のパネルやフォーム)

  • 選択して開いた文書上にドロップする、ビジネス・サービスとビジュアル要素の組合せ

データ・コントロール・パレットでのクライアント文書のレイアウトが完了したら、個々のバインディング定義を表示してカスタマイズできます。

6.3.2 データ・コントロール・ビジネス・オブジェクトの概要

データ・コントロール・パレットのルート・ノードは、ビジネス・サービス用に登録されたデータ・コントロールを表します。データ・コントロール自体は選択できませんが、データ・コントロールがサポートする操作の中から選択できます。データ・コントロール専用の操作は、ルート・ノードのOperationsフォルダに表示されます。このタイプの操作は、Oracle ADFバインディング・コンテキスト全体に適用する操作を実行する場合に使用します。たとえば、Oracle ADF BC用のデータ・コントロールが提供するコミット操作やロールバック操作などです。

ルートのデータ・コントロール・ノードの下には、Beanベースのビジネス・サービスが、次のどちらかの形で表示されます。

  • 属性: Beanプロパティなど。単純なスカラー値オブジェクト、構造化オブジェクト(Bean)またはコレクションを定義できます。

    または

  • 操作: Beanメソッドなど。値を戻すものと戻さないもの、メソッド・パラメータを取るものと取らないものがあります。

Webサービスはこの階層にはあてはまらず、データ・コントロール・パレットには操作のみが表示されます。

データ・コントロール・パレットでは、属性と操作は次の専用のアイコンで表示されます。2箇所以上に表示されるアイコンは様々なアクセッサ戻り型を表し、使用できるビジュアル要素も異なる場合があります。次の表を参照してください。

アイコン 説明 ビジュアル要素の選択肢
スカラー・アイコン
スカラー値(単純なIntegerまたはStringオブジェクトなど)を表す属性 テキスト入力、チェック・ボックス、選択リストおよびラジオ・ボタンなど、属性がバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。
アクセッサ属性アイコン
スカラー値のコレクション(Integerの配列またはStringのリストを提供するものなど)を表すアクセッサ属性 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。
コレクション・アクセッサ・アイコン
属性と操作を含む構造化オブジェクトのコレクション(従業員オブジェクトのコレクションなど)を表すアクセッサ属性 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。
コレクション・アクセッサ・アイコン
操作のみで属性は含まない構造化オブジェクトのコレクション(サービスBeanのコレクションなど)を表すアクセッサ属性 JSPの場合は読取り専用の動的表およびナビゲーション・ボタン、UIXの場合はさらに選択肢が増え、JClientの場合はコレクションがバインドされたコントロールすべてが選択できます。
Beanアクセッサ・アイコン
属性と操作を含む構造化オブジェクト(住所オブジェクトなど)を戻すアクセッサ属性 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。
Beanアクセッサ・アイコン
操作のみで属性は含まない構造化オブジェクト(サービスBeanなど)を戻すアクセッサ属性 JSPの場合は読取り専用の動的表およびナビゲーション・ボタン、UIXの場合はさらに選択肢が増え、JClientの場合はコレクションがバインドされたコントロールすべてが選択できます。
メソッド・アイコン
パラメータ値を取る場合と取らない場合がある操作(Beanに対するJavaメソッドなど) ボタンまたはフォーム付きボタン(JSP)、送信ボタン(UIX)、ボタン(JClient)。
操作アイコン
組込みの操作(navigate to rowやexecuteなど) ボタンまたはフォーム付きボタン(JSP)、送信ボタン(UIX)、ボタン(JClient)。
メソッド・アイコン
行セットの主キー値を渡すための組込み操作(set current row with keyなど) ボタンまたはフォーム付きボタン(JSP)、送信ボタン(UIX)、ボタン(JClient)。

データ・コントロール・パレットでは、戻り値を指定する操作は次の専用のアイコンで表示されます。戻されるオブジェクトの内容によって、使用できるビジュアル要素が決まります(次の表を参照)。

アイコン 説明 ビジュアル要素の選択肢
スカラー・アイコン
スカラー値(単純なIntegerまたはStringオブジェクトなど)を戻す操作 JSPおよびUIXの場合、結果を表示する読取り専用のビジュアル要素。JClientの場合、属性がバインドされたコントロールすべて。
メソッドを戻すアイコン
スカラー値のコレクション(Integerの配列またはStringのリストを提供するものなど)を戻す操作 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。
メソッドを戻すアイコン
属性と操作を含む構造化オブジェクトのコレクション(従業員オブジェクトのコレクションなど)を戻す操作 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。
メソッドを戻すアイコン
操作のみで属性は含まない構造化オブジェクトのコレクション(サービスBeanのコレクションなど)を戻す操作 JSPの場合は読取り専用の動的表およびナビゲーション・ボタン、UIXの場合はさらに選択肢が増え、JClientの場合はコレクションがバインドされたコントロールすべてが選択できます。
メソッドを戻すアイコン
操作のみで属性は含まない構造化オブジェクト(サービスBeanなど)を戻す操作 JSPの場合は読取り専用の動的表およびナビゲーション・ボタン、UIXの場合はさらに選択肢が増え、JClientの場合はコレクションがバインドされたコントロールすべてが選択できます。
メソッドを戻すアイコン
属性と操作を含む構造化オブジェクト(住所オブジェクトなど)を戻す操作 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。

ただし、ビジネス・サービスの定義によっては、データ・コントロール・パレットに表示されるメソッド戻り値は、ビジネス・サービスに対して定義されているデータ・コントロール属性と重複する場合があります。選択が可能な場合には、メソッドの戻り値ではなく属性とアクセッサのノードを選択してください。データ・コントロール属性とアクセッサのみが、Oracle ADFバインディングを完全にサポートします。たとえばイテレータ・バインディングはメソッド戻り値で使用できません。

6.3.3 Oracle ADFプロジェクト・ファイルの概要

JDeveloper設計時ツールを使用してOracle ADFベースのアプリケーションを構築すると、Oracle ADF専用のプロジェクト・ファイルが生成されます(次の図を参照)。

ADF設計時のソース・ファイル

6.3.3.1 Oracle ADFモデル・プロジェクトのファイル

DataControls.dcxファイルは、ビジネス・サービスをデータ・コントロールとして登録すると作成されます。ただし、このファイルは、Oracle ADF Business ComponentsおよびOracle ADF TopLinkマッピング・データ・コントロールに対しては生成されません。この場合、データ・コントロールは生成済のサービスから直接メタデータを取得します。

DataControls.dcxファイルは、Oracle ADFデータ・コントロールとして登録されたBean用のファクトリ・クラスを指定します。EJB、WebサービスおよびBeanベースのデータ・コントロールの場合、プロパティ・インスペクタでこのファイルを編集し、パラメータの追加と削除、およびデータ・コントロール設定の変更を行えます。

各種 .xmlファイルは、Bean(EJB Session Beanなど)をOracle ADFデータ・コントロールとして登録すると作成されます。この定義ファイルは、クライアント・アプリケーションで使用可能なBeanの属性、アクセッサおよびコレクションを指定します。このファイルは、アクセッサ・メソッドがコレクションを戻す場合にのみ変更します。この場合、戻り型の指定が必要です。Oracle ADF Business Componentsの場合には、アクセッサの戻り型はすべてわかっているため手動で指定する必要はありません。

6.3.3.1.1 DataControls.dcxファイルの構文について

BeanベースおよびWebサービス・ベースのビジネス・サービスの場合、DataControls.dcxファイルはモデル・プロジェクト・フォルダの/src/packageディレクトリに作成されます。アプリケーション・ナビゲータでは、「アプリケーション・ソース」フォルダのモデル・パッケージ内にこのファイルが表示されます。ファイル・ノードをダブルクリックすると、データ・コントロール記述がXMLコード・エディタに表示されます。データ・コントロール・パラメータを編集するには、プロパティ・インスペクタを使用し、構造ウィンドウで必要なパラメータを選択します。

次のコードは、Oracle ADFビジネス・サービス、JavaBeansおよびWebサービスのデータ・コントロールに対する構文をまとめて示しています。

<DataControlConfigs
   id="DataControls"
   xmlns="http://xmlns.oracle.com/adfm" >
   <Contents>
      <DataControl
            id="ClassNameDataControl | AppModuleDataControl |
                PXWebServiceNameDataControl"

            <!-- Indicates for the ADF design time the class to use to represent
                  the data control on the Data Control Palette. -->
                  SubType="DCBC4J | DCJavaBean | DCWebService"

            <!-- Indicates whether the data control for the business service
               supports query-by-example. This enables the find operation choice
              in the Data Control Palette for this data control and the
              associated services. Not used by ADF. -->
                  SupportsFindMode="true | false"

            <!-- Indicates whether the data control for the business service
                supports transaction semantics. This enables commit and rollback
                  operations on the data control. -->
                  SupportsTransactions="true | false"
             <!-- Oracle ADF Business Components definitions, including the
                package, the bc4j.xcfg configuration, and the factory class. -->
                  Package="model"
                  Configuration="AppModuleLocal"
                  FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"

             <!-- Standard Bean definitions, including the factory class,
                  the XML definition file, and the bean class file. -->
                  FactoryClass="oracle.adf.model.generic.DataControlFactoryImpl"
                  Definition="model.Class1"
                  BeanClass="model.Class1" >
      </DataControl>
   </Contents>
</DataControlConfigs>

6.3.3.2 ビュー/コントローラ・プロジェクトのファイル

各種 .jsp.uixまたは .javaファイルは、クライアント・アプリケーションのプレゼンテーション・ドキュメントです。Oracle ADFアプリケーションのUIは、ビジュアル・エディタとデータ・コントロール・パレットを使用してレイアウトできます。データ・バインドされたUIコンポーネントを文書に挿入すると、バインディング式がページに追加され、それによって実行時にOracle ADFバインディング・オブジェクトにアクセスします。このバインディング式はソース・コードで直接編集でき、UIコンポーネントのバインディング・オブジェクトで使用可能なプロパティを使用して実行時の動作を指定できます。

DataBindings.cpxファイルは、Strutsページ・フロー・ダイアグラムのWebページをビジュアル・エディタで最初に開いた際に作成されます。.cpxファイルは、アプリケーション全体用のOracle ADFバインディング・コンテキストを定義します。.cpxファイルは、Oracle ADFバインディング・オブジェクトが実行時に作成される基となるメタデータを提供します。バインディング・コンテキストは、アプリケーション全体にわたるバインディングへのアクセスを提供します。このファイルはプロパティ・インスペクタで編集でき、パラメータの追加や削除、およびバインディング・コンテナ設定の変更を行えます。

pageNameUIModel.xmlファイルは、データ・コントロール・パレットおよびビジュアル・エディタを使用して新しいWebページまたはJClientを設計するたびに作成されます。このXMLファイルは、クライアント・アプリケーション内の各プレゼンテーション・ドキュメント用のOracle ADFバインディング・コンテナを定義します。バインディング・コンテナは、ページ内のバインディングへのアクセスを提供します。したがって、データ・バインドされたWebページまたはJClientパネルごとにXMLファイルが1つ作成されます。プレゼンテーション・ドキュメントからバインディング式を削除した場合には、このファイルのバインディング定義を編集する必要があります。


注意:

pageNameUIModel.xmlファイルの名前はJDeveloper内からは変更できませんが、JDeveloper外部ではMyWork/ViewController/src/viewフォルダからファイル名を変更できます。pageNameUIModel.xmlファイルの名前を変更した場合、DataBindings.cpxファイルの<Containee> idおよびFullName属性での参照も更新する必要があります。

6.3.3.2.1 UIModel.xmlファイルの構文について

UIModel.xmlファイルは、ビュー/コントローラ・プロジェクト・フォルダの/src/viewディレクトリに作成されます。アプリケーション・ナビゲータでは、「アプリケーション・ソース」フォルダのビュー・パッケージ内にこのファイルが表示されます。ファイル・ノードをダブルクリックすると、バインディング・コンテナ記述がXMLコード・エディタに表示されます。バインディング・コンテナ・パラメータを編集するには、プロパティ・インスペクタを使用し、構造ウィンドウで必要なパラメータを選択します。

ビジネス・サービス・オブジェクトMyAttribute1MyAttribute2およびMyDataCollectionIteratorに、それぞれの対応するバインディング・オブジェクトを介してアクセスするWebページの場合、次の構文が生成されます。

<DCContainer
   id="PageNameUIModel"
   xmlns="http://xmlns.oracle.com/adfm"
   Package="view"

   <!-- Indicates whether find mode should be enabled for the page. -->
        FindMode="false | true"

   <!-- Indicates whether to check the currency of the bound collection.
        This ensures that row updates will be applied to the correct row. -->
        EnableTokenValidation="true | false" >

   <Contents >
      <DCIterator
         id="MyDataCollection1Iterator"
         Binds="BusinessServiceDataControl.MyDataCollection"
         <!-- Indicates the number of rows to display from bound collection. -->
         RangeSize="10"
      </DCIterator>
      <DCControl
         id="MyBusinessServiceName"
         Subtype="DCBindingType"
         IterBinding="MyDataCollection1Iterator" >
         <AttrNames>
            <Item Value="MyAttribute1" />
            <Item Value="MyAttribute2" />
         </AttrNames>
      </DCControl>
 </DCContainer>

6.3.3.2.2 DataBindings.cpxファイルの構文について

DataBindings.cpxファイルは、ビュー/コントローラ・プロジェクト・フォルダの/srcディレクトリに作成されます。アプリケーション・ナビゲータでは、「アプリケーション・ソース」フォルダにこのファイルが表示されます。ファイル・ノードをダブルクリックすると、バインディング・コンテキスト記述がXMLコード・エディタに表示されます。バインディング・コンテキスト・パラメータを編集するには、プロパティ・インスペクタを使用し、構造ウィンドウで必要なパラメータを選択します。

次のコードは、Oracle ADFビジネス・サービス、JavaBeansおよびWebサービスのデータ・コントロールに対する構文をまとめて示しています。

<JboProject
   id="DataBindings"
   xmlns="http://xmlns.oracle.com/adfm"

   <!-- Indicates that the components of this project may appear
         in separate XML files. Not used by ADF. -->
         SeparateXMLFiles="false"

   <!-- Used by JClient applications to locate a bc4j.xcfg file. For backwards
        compatibility. -->
        Package=""

   <!-- Indicates whether the ADF bindings use generic classes or
        JClient-specific classes. -->
        ClientType="Generic | JClient" >

   <Contents>
      <DataControl
         id="ClassNameDataControl | AppModuleDataControl |
                           PXWebServiceNameDataControl"

             <!-- Indicates for the ADF design time the class to use to
                  represent the data control on the Data Control Palette. -->
                  Subtype="DCBC4J | DCJavaBean | DCWebService"

             <!-- Indicates whether the data control for the business service
                  supports query-by-example. This enables the find operation
                  choice in the Data Control Palette for this data control and
                  the associated services. Not used by ADF. -->
                  SupportsFindMode="true | false"

             <!-- Indicates whether the data control for the business service
                  supports transaction semantics. This enables commit and
                  rollback operations on the data control. -->
                  SupportsTransactions="true | false"


             <!-- Oracle ADF Business Components definitions, including the
                  package, the bc4j.xcfg configuration, and the factory
                  class.-->
                  Package="model"
                  Configuration="AppModuleLocal" >
                  FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl"

             <!-- Standard Bean definitions, including the factory class,
                  the XML definition file, and the bean class file. -->
                  FactoryClass="oracle.adf.model.generic.DataControlFactoryImpl"
                  Definition="model.Class1"
                  BeanClass="model.Class1" >

             <!-- Indicates whether the Application Module synchronization will
                  use Batch mode or Immediate mode. -->
                  <Parameters >
                    <Parameter
                       name="Sync"
                       value="Batch" >
                    </Parameter>
                  </Parameters>
      </DataControl>

      <!-- References the binding containers to create from the UI Model
           definition files. This allows the .cpx file to create the binding
           context for the application at runtime. -->
           <Containee
               id="MyPage1UIModel"
               ObjectType="BindingContainerReference"
               FullName="view.MyPage1UIModel" >
           </Containee>
           <Containee
               id="MyPage2UIModel"
               ObjectType="BindingContainerReference"
               FullName="view.MyPage2UIModel" >
           </Containee>
              ...
   </Contents>
</JboProject>

6.4 WebアプリケーションとOracle ADFモデル・レイヤーの実行時統合

バックエンドのビジネス・サービスへのデータ・バインディングをOracle ADFモデル・オブジェクトで行うWebアプリケーションでは、いくつかのOracle ADF専用コンポーネントとページのリクエスト・オブジェクト間でやり取りが発生します。最初に、アプリケーションが実行されると、アプリケーションのweb.xmlファイルに指定されているADF専用のサーブレット・フィルタが実行されます。このOracle ADFフィルタはoracle.adf.model.servlet.ADFBindingFilterのインスタンスで、DataBindings.cpxファイルのメタデータを読み込んで、Oracle ADFデータ・バインディング・オブジェクトを作成します。次にページ・ライフサイクル・オブジェクト(oracle.adf.controller.lifecycle.Lifecycleインタフェースの実装)が間に入り、Oracle ADFモデル・オブジェクトをページのリクエスト・オブジェクト上に配置します。Oracle ADFモデル・オブジェクトはWebアプリケーション用のバインディング・コンテキストを定義し、次のように、Webページ内の式言語(EL)構文を使用してbindingsネームスペースからアクセス可能となります。

${bindings.SomeBindingContainer.someBinding.inputValue}

上の式では、Oracle ADFモデル・レイヤーのバインディング・コンテキスト内のSomeBindingContainerバインディング・コンテナにあるsomeBindingというバインディングの現在値を参照しています。bindingsネームスペースは、データ・コントロールがバインドされたUIコンポーネントをデータ・コントロール・パレットからページへドロップすると定義されます。このネームスペースによって、EL式を介したバインディング・コンテキスト(EL式ではbindingsとして指定)へのアクセスが可能になります。

データをレンダリングするために、JSPまたはUIXページではJSTLのCoreタグ・ライブラリのタグを使用します。これらのタグは、標準の式言語を使用したBeanおよびコレクションの参照をサポートします。たとえば、Employeeレンジ・バインディング・モデル・オブジェクトの行は、次のタグおよび式でレンダリングされます。

 <c:forEach var="x" items="${bindings.Employees.rangeSet}">
    <tr>
       <td><c:out value="${x.Empno}"/></td>
       <td><c:out value="${x.Ename}"/></td>
       <td><c:out value="${x.Sal}"/></td>
    </tr>
</c:forEach>

この例では、Employeesレンジ・バインディングのrangeSetプロパティが、Oracle ADFモデル・オブジェクトの現在のレンジにある行をコレクションとして公開します。<c:forEach>タグのvar="x"属性がxという名前のループ変数を割り当て、次にループ内のタグが各行Bean内の属性の値をELドット表記法で参照します。JSTL仕様はこのオブジェクトに、現在反復中の行を伝えるプロパティindexを提供します。


注意:

Oracle ADFモデル・オブジェクトによるユーザーとデータ間の対話管理の詳細は、「Oracle ADFとStrutsの統合」を参照してください。この章にあるOracle ADFライフサイクル・オブジェクトの項には、コントローラ・レイヤーのオブジェクトが、表示用のデータをページへプッシュする前に、モデルの変更を検証してカスタム・イベントを処理する方法が説明されています。

6.5 JClientアプリケーションとOracle ADFモデル・レイヤーの実行時統合

Oracle ADF JClientアプリケーションでは、Swingコントロールとビジネス・サービスのデータソースとのデータ・バインディングを実現するために、UIコンテナに非常によく似た一連のJClinetオブジェクトが作成され、それらはJClientフォームの組立てに使用されます。これらのコンテナとそのJClient専用コードは、JClientフォーム・ウィザードを使用して最終的なアプリケーションを生成することで確認できます。たとえば、DeptおよびEmpというビュー・オブジェクトに基づくマスター/ディテール形式のフォームの場合、ウィザードは次のクラスを生成します。

ここで、JPanelはSwingクラス、JClientFrameおよびJClientPanelはJClientの一部で、アプリケーションのデータ・ブラウズ用パネルを構成します。

6.5.1 JClientのデータ・バインディングについて

JClientにおけるデータ・バインディングとは、バックエンドのビジネス・サービス内のデータにバインドされたSwingコンテナとUIコンポーネントを作成する機能のことです。JClientでは、データ・バインディングを可能にするために、Oracle ADFモデル・レイヤーとともに動作する簡単なAPIを提供します。このAPIは、次のJClientブートストラップ・コードを組み合せた形でアプリケーション・ソース・コードに提供されます。

  • loadCpx(): (DataBindings.cpxファイルに指定されている)アプリケーション・メタデータをロードするためにコールします。メタデータは、Oracle ADFデータ・コントロールおよびOracle ADFバインディング・コンテキストを介して、ビジネス・サービスの実装インスタンス(Business Componentsアプリケーション・モジュール・インスタンスなど)への接続を指定します。

  • setBindingContext(): Oracle ADFバインディング・コンテキストをフレームまたパネルで使用できるようにするためにコールします。

  • createPanelBinding(): ビジネス・サービスに格納されたデータ・コレクションに、Swingコンポーネント・モデルを介してアクセスするオブジェクトを作成するためにコールします。

  • bindUIControl(): JClientフォームまたはパネルの個々のコンポーネントに対してOracle ADFモデルを設定するために、パネル・バインディングに対してコールします。

ルートのJClientフレームのブートストラップ・コードで確立されたADFバインディング・コンテキストは、以降にコールされるJClientパネル間で共有され、アプリケーションのクラスに対してトランザクション用のコンテキストおよび環境を設定します。パネル・バインディング自体はUIModel.xmlファイルのメタデータから作成され、ADFバインディング・コンテキスト内で使用可能なデータ・コントロールのサブセットを公開します。

  • ビジネス・サービス・ビューの独立した分岐を作成する場合、アプリケーションが新しいパネル・バインディングを設定するフレームを開くようにする必要があります。

  • アプリケーションの連続した分岐(たとえばマスターとディテールの分岐)で同じビューを使用する場合には、2次コンテナはすべて最初のフレームが作成したパネル・バインディング・オブジェクトを共有します。

6.5.2 生成済JClientコンテナ

データ・バインドされたコンテナを作成する最も簡単な方法は、JClientウィザード(JDeveloperの新規ギャラリにあるSwing/JClient for Oracle ADFのフォルダを参照)を使用することです。特に、次の2つのJClientウィザードを使用した場合、パネル・バインディングの作成に必要なブートストラップ・コードとコンストラクタがソース・コードに追加されます。

  • JClient Empty Form作成ウィザード: アプリケーションが使用するビジネス・サービス(ADF Business Componentsなど)への接続を含むJClientパネル・バインディングを作成する、空のフレームを生成する場合に使用します。

  • JClient Empty Panel作成ウィザード: コンストラクタを含む空のパネルを生成し、新しいパネル・バインディングを作成するか、または親フレームのバインディングを共有する場合に使用します。

これら2つのウィザードのもう1つのメリットは、JDeveloper内での簡単なドラッグ・アンド・ドロップによるUI設計がサポートされる点です。JDeveloperのデータ・コントロール・パレットから挿入するすべてのSwingコンポーネントは、(ビジネス・サービスのコレクション、構造化オブジェクト、属性およびメソッドを格納した)特定のデータ・コントロール・オブジェクト用のブートストラップ・コードで生成されるため、データ・コントロール・オブジェクトに含まれるあらゆるビジネス・サービスにアクセスできます。

6.5.2.1 標準のJavaコンテナ

(JClientウィザードを使用しないで作成する)標準のフレームまたはパネルから開始し、それに対してJClientデータ・バインディングを有効にするには、該当するJClientブートストラップ・コードをメイン・フレームに追加し、次に2次ウィンドウのパネル・バインディングを次のように処理します。

  • 親フレームとパネル・バインディングを共有する場合:

      BusinessCompViewName(getPanelBinding());
      frame.setVisible(true);
    
    
  • 新しいフレームで独自のパネル・バインディングを定義する場合:

    BusinessCompViewName(new
     (JUPanelBinding(getPanelBinding().getApplicationName(),null));
    frame.setVisible(true);
    
    

最初のコールは、フレーム・オブジェクトを作成してパネル・バインディングを設定します。2番目のコールは、フレームを表示可能にします。

6.5.2.2 JCleintにおけるデータ・パネル間のデータ・コンテキストの維持方法

JClientFrameまたはJPanelでJClientPanelインタフェースを実装すると、JClientアプリケーションでは次の操作が可能となります。

  • データ・バインドされたパネル間での、一貫したデータ・コンテキストの維持(データ・パネル間の連鎖とも呼ばれる)

  • データ・バインドされたSwingコントロールからのデータへのアクセス

設計時には、JClientアプリケーションにデータ・ブラウズ用パネルを追加すると、UIコントロールとビジネス・サービスの行セット・イテレータ間の対話を管理する各パネルのコンテキストは、フレームまたは格納先パネル内(マスター/ディテールのレイアウト・パネルなど)に作成されたパネル・バインディング・オブジェクトから取得されます。JClientでは、データ・ブラウズ用パネルを連鎖させるためにコードを追加する必要はありません。たとえば、ウィザードでデータ・ブラウズ用パネルPanelDeptViewおよびPanelEmpView1を作成したとします。この場合、各JPanelにJClientPanelインタフェースのsetPanelBinding()およびgetPanelBinding()メソッドを実装すれば、この2つのパネルはパネル・バインディング(JUPanelBinding)のインスタンスを介して同じデータ・コンテキストを共有できます。

JClientでは、このパネル・バインディングを作成するフレームまたはパネルがあれば、既存のパネル・バインディング・オブジェクトを共有するかまたは新規のオブジェクトを作成するデータ・ブラウズ用パネルを新たに追加するだけで、アプリケーションを組み立てることができます。

その上で、JDeveloperのデータ・コントロール・パレットを使用して、データ・バインドされたコントロールを1つずつデータ・パネルに追加できます。Swingコンポーネントのレベルでは、これによってデータ・バインディングが設定され、コントロールのdocumentまたはmodelプロパティにJClientコントロール・モデルが指定されます。実行時には、データ・パネル内の各コントロールに、コントロールのsetModel()またはsetDocument()メソッドへの引数としてのパネル・バインディング・オブジェクトを介して、データがバインドされます。

6.5.3 パネル・バインディングの作成/使用プロセス

パネル・バインディングがどのように作成されてデータ・バインドされたパネルで使用されるかは、アプリケーション実行時に発生する処理から理解できます。まずJClientフレームが起動され、続いてJClientコードが次のように実行されます。

  1. main()メソッドがアプリケーションをブートストラップします。これにより、DataBindings.cpxファイルのエントリに基づいて、バインディング・コンテキストが開始され、Oracle ADFデータ・コントロールがロードされます。次に、初期化されたOracle ADFモデル・オブジェクトとともにバインディング・コンテキストがパネル・バインディングに渡され、Oracle ADFデータ・バインディングが作成されます。

  2. フレームがアプリケーション・オブジェクトを取るコンストラクタを介して初期化されます(上の例のFrameDeptViewEmpView1)。フレームが初期化された結果、パネル・バインディング・オブジェクト(JUPanelBinding)がOracle ADFモデル定義に基づいて作成されます。この定義には、複数のデータ・コントロールのデータにバインドされたコンポーネントが含まれる場合があります。パネル・バインディングの作成は重要なJClient機能の1つで、Swingコンポーネント用のデータ・バインディングとデータ・パネルの連鎖を可能にします。

  3. フレームまたはアプレット・クラスがレイアウト・パネル(上の例のMDPanelDeptViewEmpView1)を初期化し、setBindingContext()メソッドを使用して新しいレイアウト・パネル上にパネル・バインディングを設定します。

  4. レイアウト・パネルのjbInit()メソッドに、データ・ブラウズ用(子)パネルが作成されます。その際、JClientはこれらの子データ・パネル(上の例のPanelDeptViewPanelEmpView1)のバインディングに共有のバインディング・コンテキストを使用します。

  5. コントロールから属性へのデータ・バインディングが、コントロールに指定されたJCleintモデルを使用して実行されます。(このバインディング情報はバインディング・コンテナXMLメタデータに格納されています。)

  6. コントロール・バインディングがイベントを処理して、UIコントロールへのデータの移入と更新を行います。

6.5.4 JClientのフレーム・クラスについて

6.5.4.1 アプリケーション・ブートストラップ

ナビゲータでフレーム・クラスを選択して「実行」を選択すると、main()メソッドがアプリケーションをブートストラップします。これにより、DataBindings.cpxファイルのエントリに基づいて、バインディング・コンテキストが開始され、データ・コントロールがロードされます。次に、初期化されたデータ・コントロールとともにバインディング・コンテキストがパネル・バインディングに渡され、Oracle ADFデータ・バインディングが作成されます。

次の例は、フォームの作成ウィザードで作成されたブートストラップ・コードで、HRスキーマのEmployees表およびDepartments表から選択された列を使用しています。

// bootstrap application

JUMetaObjectManager.setBaseErrorHandler(new JUErrorHandlerDlg());

// Lookup the *.cpx file and create all data controls listed in this file.

JUMetaObjectManager mgr = JUMetaObjectManager.getJUMom();

// Use the definition classes provided by JClient. Change only if you do not
   want to use custom DefClasses.

mgr.setJClientDefFactory(null);

// Create a new binding context that extends java.util.Hashtable.

BindingContext ctx = new BindingContext();

// Get user connection information if available. If not, display logon dialog.


ctx.put(DataControlFactory.APP_PARAM_ENV_INFO, new JUEnvInfoProvider());
// Set locale to the default locale of the JVM.

ctx.setLocaleContext(new DefLocaleContext(null));
// Load data binding container data binding file.

HashMap map = new HashMap(4); map.put(DataControlFactory.APP_PARAMS_BINDING
   _CONTEXT, ctx);
mgr.loadCpx("DataBindings.cpx", map);
// Get handle to the Business Components application module.

DCDataControl app = (DCDataControl)ctx.get("model_AppModuleDataControl");

app.setClientApp(DCDataControl.JCLIENT);

// Despite the following line of code, attribute sets and fetches are normally
// performed in one batch operation. This requires only one network round
// trip. Attributes that aren't needed are not loaded to the client. The code
// line below is added only when using the JClient Form wizard. Declaratively
// creating the frame, starting with an empty form wizard does not add the
// following lines.

app.getApplicationModule().fetchAttributeProperties(new String[]
  {"DepartmentsView1", "EmployeesView3"}, new String[][] {{"DepartmentId",
   "DepartmentName" }, {"EmployeeId", "FirstName", "LastName" "DepartmentId" }},
   null);

// Initialize application root class.

FormDepartmentsView1EmployeesView3 frame = new FormDepartmentsView1EmployeesView3();

// Set binding context to the frame.

frame.setBindingContext(ctx); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize();

6.5.4.2 フレームの初期化

フレームはそのコンストラクタによって初期化されます(デフォルトではコンストラクタに引数はありません)。アプリケーションのバインディング・コンテキストがフレームのsetBindingContext()メソッドに渡されます。

フレームが初期化された結果、パネル・バインディング・オブジェクト(JUPanelBinding)がOracle ADFモデル定義に基づいて作成されます。この定義には、複数のデータ・コントロールのデータにバインドされたコンポーネントが含まれる場合があります。パネル・バインディングの作成は重要なJClient機能の1つで、Swingコンポーネント用のデータ・バインディングとデータ・パネルの連鎖を可能にします。

データ・パネルまたはフォームのレイアウト終了後に、フォームにfetchAttributeProperties()メソッドを定義するとJClientアプリケーションのパフォーマンスを向上させることができます。これにより、フォームは必ずバッチ・モードで属性値をフェッチします。

6.5.5 JClientのレイアウト・パネルについて

JClientフォーム作成ウィザードを使用し、Oracle ADF Business Componentsデータ・モデルに基づくマスター/ディテール・パネルを含むJClientアプリケーションを作成すると、JClientフレーム内にコンテナ・パネルが作成されます。このパネルは複数のデータ・パネルをグループ化するため、レイアウト・パネルと呼ばれます。1つ以上のデータ・ブラウズ用パネルのUIコンテナとしての機能に加え、レイアウト・パネルには、各データ・パネルのデータ・コンテキストを共有のバインディング・コンテキストを介して維持する機能があります。


注意:

レイアウト・パネルはJClientフォーム作成ウィザードで作成されますが、JClientアプリケーションに不可欠なパーツというわけではありません。このトピックでは、JClientアプリケーションが、データ・ブラウズ用パネル間のデータ・コンテキストを共有のバインディング・コンテキストを介して維持する方法を紹介するために、取り上げています。

アプリケーション・フレームのバインディング・コンテキストをフレームに含まれるJClientパネルに渡すには、次のようにパネルのsetBindingContext()メソッドをコールします。

// get the binding context from the frame

   BindingContext _bctx = panelBinding.getBindingContext();

// pass the context to the first child panel

   dataPanel.setBindingContext(_bctx);

//alternatively you can use

   dataPanel.setBindingContext(panelBinding.getBindingContext());

6.5.6 JClientのデータ・パネルについて

データ・ブラウズ用パネルには、ユーザーがデータの表示と編集を行うためのコントロールが含まれます。つまり、ここにはフィールドとして宣言およびインスタンス化される一連のコントロールが含まれます。データ・ブラウズ用パネルは、次のように親フレームまたはパネルから(setBindingContext()コールを介して)そのパネル・バインディングを受け取ります。

panel.setBindingContext(panelBinding.getBindingContext());

親コンテナがデータ・ブラウズ用パネルとそのパネル・バインディングを作成した後、jbInit()がコールされます。このjbInit()メソッドで、コントロールが属性にバインドされます。次のコードを参照してください。

textFieldDeptName.setDocument((Document)panelBinding.bindUIControl
       ("DepartmentName, "textFieldDeptName"));

上のコードのtextFieldDeptNameJTextFieldコンポーネントで、基になっているビジネス・サービスのDepartmentName属性にバインドされています。識別子DepartmentNameは、UIModel.xmlファイル(バインディング・コンテナを定義するファイル)内の定義を参照します。バインディング・コンテナにはイテレータ・バインディングのリストが保存されています。各イテレータ・バインディングは、ビュー・オブジェクト・インスタンスと(オプションで)行セット・イテレータを指定します。

したがって、実行時にsetDocument()がコールされると、JClientは指定された名前(DepartmentName)でコントロール・バインディングを検索します。フォーム用のバインディング・コンテキストで見つかった場合には、JClientはそのコントロール・バインディングの関連するイテレータ・バインディングを使用して値にアクセスします。

6.5.7 JClientのコントロール・バインディングについて

6.5.7.1 コントロールへのデータの移入

データ・ブラウズ用パネルが初期化されると、レイアウト・パネルはパネル・バインディングに対してexecuteIfNeeded()をコールして、Business Componentsデータソースへの問合せを実行します。

このexecuteIfNeeded()メソッドはビュー・オブジェクトに対して問合せが実行済かどうかを判断し、実行されていない場合にはビュー・オブジェクトに対してexecuteQuery()をコールします。問合せの実行によってデータベースからキャッシュへデータが取り出され、Oracle ADF Business Componentsの行セット・リスナー・イベントが起動します。最初に起動するイベントはRowSetListener.rangeRefreshedです。このイベントはイテレータ・バインディングによって(RowSetListenerを実装し、それ自体リスナーとして登録しているため)取得されます。このイベントはレンジの行を取得し、コントロール・バインディングに対してupdateValuesFromRows()をコールします。コントロール・バインディングは行からデータを取り出し、Swing APIを使用してデータをコントロールに割り当てます。その結果、Swing APIはパネルUIをデータで更新します。

6.5.7.2 コントロールを介したデータ更新

ユーザーがJClientにバインドされたコントロールを使用した結果、Oracle ADF Business Componentsによってデータが更新される場合があります。たとえばテキスト・フィールド(textFieldDname)の場合、ユーザーがテキスト・フィールドの内容を編集してコントロールを離れると(focusLostイベントが生成される)、JClientにイベントが通知されます。その結果、JCleintはコントロールから更新されたデータを取得し、行に対してsetAttribute()をコールします。

6.6 ベスト・プラクティス

6.6.1 Oracle ADFイテレータ・バインディングのUIアクセス用カスタマイズ

バインドされたデータ・コレクション内のデータ・オブジェクトすべては使用しない場合や、一定数のデータ・オブジェクトをページに表示する場合には、データ・コレクションからフェッチするレンジ内のデータ・オブジェクトの数を設定できます。レンジは、コレクション内のデータ・オブジェクトのサブセットへのアクセスに使用するウィンドウを定義します。デフォルトのレンジ・サイズは、10個のデータ・オブジェクトをフェッチするレンジです。

ヒント: 一般には、1つのアプリケーション内の複数のバインディング・コンテナが参照するイテレータ・バインディングには、すべて同じレンジ・サイズを使用することをお薦めします。同じレンジ・サイズを使用すると、バインディング・コンテナが同じデータ・コレクションに対して不必要なフェッチ操作を生成することがなくなります。異なるレンジ・サイズが必要で、Oracle ADF Business Componentsを使用しているアプリケーションの場合、指定のコレクションに対してイテレータ・バインディングを作成して(ビュー・オブジェクトの行セット・イテレータ内で)一意な名前を指定する方法で、セカンダリの行セット・イテレータを宣言的に作成できます。

イテレータ・バインディングに対してレンジ・サイズを設定するには、次のようにします。

  1. ビジュアル・エディタで文書を開いた状態で、「表示」「構造」を選択して構造ウィンドウを開きます。

  1. 構造ウィンドウのツールバーから「UIモデル」をクリックし、ノードを展開してバインディングのリストを表示します。

  2. レンジ・サイズを設定するイテレータ・バインディングを選択し、「表示」「プロパティ・インスペクタ」を選択してプロパティ・インスペクタを開きます。

  3. プロパティ・インスペクタの「レンジ・サイズ」フィールドで、値を編集して[Enter]を押します。デフォルト値は10です。

値のうち、-10には特別な意味があります。-1はコレクションから使用できるオブジェクトをすべて戻し、0はコレクションがデータソースから取得したのと同じ数のオブジェクトを戻します。

データ・コントロール・パレットを使用して、next setまたはprevious set操作(Oracle ADF Business Componentsを使用している場合はボタンとして表示される)をページにドロップすると、イテレータのレンジ・サイズは、一度に10個のオブジェクトフェッチするようにデフォルトで設定されます。この操作により、イテレータに対するそれまでの設定内容が上書きされます。Oracle ADF Business Componentsで一意なレンジ・サイズを維持するには、プロパティ・インスペクタでイテレータ・バインディングに行セット・イテレータ名を指定します。

コレクションにセカンダリの行セット・イテレータを指定するには、次のようにします(Oracle ADF Business Componentsのみ)。

  1. 構造ウィンドウに「UIモデル」アイコンが表示された状態で、一意な行セット・イテレータ名を指定するイテレータ・バインディングを選択します。

    バインディングの対象となる行セット・イテレータに一意な名前を指定すると、他のページのイテレータ・バインディングによってバインディング・コンテナのレンジ・サイズがリセットされることがなくなります。

  2. プロパティ・インスペクタの行セット・イテレータのフィールドへ移動します。最初このフィールドに値はありません。

  3. 選択したイテレータ・バインディングのプロパティに一意な識別名を入力し、[Enter]を押します。

実行時には、バインディング・コンテナが、カスタマイズしたイテレータ・バインディングに対応する一意な行セットを作成します。

6.6.2 Oracle ADF検索モードを使用した検索基準フォームの作成

Oracle ADF対応のWebページを作成する場合、Oracle ADF Business Componentsに対してパラメータ化された問合せを使用できます。そのためには、入力フォームを使用し、ページのバインディング・コンテナに対する検索モードを有効に設定します。Oracle ADFバインディング・コンテナは、Oracle ADFイテレータ・バインディングによって指定されたビュー・オブジェクトに対し、フォームで指定された検索基準を使用してパラメータ化された問合せを実行し、検索操作をサポートします。

検索操作の実行後、バインディング・コンテナの検索モードは解除され、Webページは入力エントリ・フォームとして機能します。この方法で、バインディング・コンテナは、あるWebページに対して検索モードの有効/無効を切り替えます。

6.6.2.1 パラメータ化された問合せについて

パラメータ化された問合せは、実行時に入力されるプレースホルダを含む問合せです。たとえば次のPL/SQL文では、min_salaryが実行時に入力されるパラメータ値に対するプレースホルダです。

SELECT ename, job, mgr FROM emp WHERE sal < :min_salary

検索モードの入力フォームは、Oracle ADFバインディングを使用して、バインドされたOracle ADF Business Componentsビュー・オブジェクト内の属性のうち、Queriableプロパティがtrueに設定されている各属性に対するフィールドを表示します。ビュー・オブジェクトは、ビジネス・コンポーネントによって実行される最初の問合せを定義します。

6.6.2.2 結果を表示するプロセス

StrutsベースのWebアプリケーションでは、ユーザーは、次の手順で検索モード付きの入力フォームを使用します。

  1. ユーザーによって表示された入力フォーム付きのWebページが、検索モードが有効な状態で実行されます。

    たとえば、ユーザーがリンクをクリックして、検索モードが有効なページを開きます。

  2. ユーザーがデータを絞り込むための検索基準を入力します。

    ユーザーは検索基準に比較記号(>、<、=)を使用できます。同じビュー基準に含まれるすべての値が検索対象になります。

  3. ユーザーがフォームの「実行」ボタンをクリックし、Strutsアクションに対するfind操作が開始され、アンカー付きの、ワイルドカード検索が実行されます。

    この操作は検索列の最初の文字をアンカーとして使用し、入力された文字列で始まるすべての文字列を検索します。

  4. Strutsアクションがもう1つのページへフォワードし、パラメータ化された問合せの結果が読取り専用の表としてそのページに表示されます。

6.7 Oracle ADF Webページ内のUIコンポーネントの要約

クライアント開発者は、データ・コントロール・パレットを使用して、すでにデータ・バインドされているUIコンポーネントをWebページに挿入します。

以降、この項では、データ・コントロール・パレットで選択可能なビジュアル要素について説明します。

6.7.1 コレクション全体または行セットに対する値バインディング

データ・コントロール・パレットには、(行セットを構成するデータ・オブジェクトが含まれる)データ・コレクション全体のバインドに使用可能な、Webページ用の各UIコンポーネントが用意されています。次の表を参照してください。

JSPページへのドラッグ・アンド・ドロップ形式 UIXページへのドラッグ・アンド・ドロップ形式 ADFバインディング・タイプ
Read-Only Table/Dynamic Table(Beanにスカラー値がない場合に使用) Read-Only Table 表バインディング

Dynamic Table(JSPページのみ)の場合、選択されたコレクションのすべての属性が表に表示されます。

Read-Only Form Read-Only Form 表バインディング(JSPページのみ)

テキスト・フィールドの場合は属性バインディング(JSPページとUIXページの両方)

ボタンの場合はアクション・バインディング(UIXページのみ)

Navigation Buttons 対応するものはありません。 アクション・バインディング
Graph 対応するものはありません。 グラフ・バインディング
Input Form Input Form 属性バインディング
対応するものはありません。 Input Form (with Navigation) テキスト・フィールドの場合は属性バインディング

ボタンの場合はアクション・バインディング

対応するものはありません。 Search Form 表の場合は表バインディング

テキスト・フィールドの場合は属性バインディング

ボタンの場合はアクション・バインディング

対応するものはありません。 Master Detail (Self) 表の場合は表バインディング

テキスト・フィールドの場合は属性バインディング

Selected Row Link 対応するものはありません。 適用不可
Navigation List 対応するものはありません。 ナビゲーション・モードのリスト・バインディング
対応するものはありません。 Textinput (secret) Textinput (secret)

6.7.2 個々のデータ・オブジェクト属性値に対する値バインディング

データ・コントロール・パレットには、単独のデータ・オブジェクト属性のバインドに使用可能な各UIコンポーネントが用意されています。次の表を参照してください。

UIコンポーネント JSPページへのドラッグ・アンド・ドロップ形式 UIXページへのドラッグ・アンド・ドロップ形式
Hello(通常出力文字) Value 対応するものはありません。
Oracle ADF Business Componentsの場合はラベル・コントロール・ヒントを、他のサービスの場合は属性値をラベルとして表示 Label

Oracle ADF Business Componentsの場合、「コントロール・ヒント」によってラベルを定義できます。

対応するものはありません。
(表示不可) Input Render

Oracle ADF Business Componentsの場合、カスタム・レンダリングを定義できます。

対応するものはありません。
カスタム・レンダラを使用した属性値の表示 Render Value

Oracle ADF Business Componentsの場合、カスタム・レンダリングを定義できます。

対応するものはありません。
テキスト・フィールド
Input Field TextInput

MessageTextInput

テキスト領域
Text Area MessageStyledText
モデル・オブジェクトにバインドされた非表示フィールドのレンダリング Hidden Field 対応するものはありません。
(表示不可) File Input Field 対応するものはありません。
パスワード・フィールド
Password Field Textinput (secret)
(表示不可) Render Value 対応するものはありません。
選択リスト
Single Select List

Static Single Select Field

List

MessageList (Select One)、MessageList (Select Many)

値リスト・フィールド
List of Value MessageLovInput
ラジオ・ボタン・グループ
Radio Button Group RadioSet

MessageRadioSet

チェック・ボックス・フィールド
対応するものはありません。

CheckBox

MessageCheckBox


6.7.3 ビジネス・オブジェクト・メソッドおよびデータ・コントロール操作用アクション・バインディング

データ・コントロール・パレットには、メソッドまたは操作のバインドに使用可能な各UIコンポーネントが用意されています。次の表を参照してください。

UIコンポーネント JSPページへのドラッグ・アンド・ドロップ形式 UIXページへのドラッグ・アンド・ドロップ形式
送信ボタン
Button SubmitButton
送信ボタン
Button with Form 対応するものはありません。
ActionRequestURI Link(Strutベースのアプリケーションのみ) 対応するものはありません。

6.8 Oracle ADF Javaクライアント内のUIコンポーネントの要約

クライアント開発者は、データ・コントロール・パレットを使用して、すでにデータ・バインドされているUIコンポーネントをJClientで準備されたフォームまたはパネルに挿入します。

6.8.1 コレクション全体またはデータ・オブジェクトに対する値バインディング

データ・コントロール・パレットには、(行セットを構成するデータ・オブジェクトが含まれる)データ・コレクション全体のバインドに使用可能な各UIコンポーネントが用意されています。次の表を参照してください。

UIコンポーネント ドラッグ・アンド・ドロップ形式 ADFバインディング・タイプ
JClient表
Table 表バインディング
JClientコンボ・ボックス
ComboBox ナビゲーション・モードのリスト・バインディング
JClientリスト
List(ScrollPane内) ナビゲーション・モードのリスト・バインディング
JClientスピナー
Spinner ナビゲーション・モードのリスト・バインディング
JClientラジオ・ボタン・グループ
Radio Button Group ナビゲーション・モードのリスト・バインディング
JClientナビゲーション・バー
Navigation Bar イテレータ・バインディング
JClientツリー
Tree ツリー・バインディング
JClientグラフ
Graph グラフ・バインディング
JClientスライダ
Slider スクロール・バインディング
JClientスクロール・バー
Scrollbar スクロール・バインディング

6.8.2 個々のデータ・オブジェクト属性値に対する値バインディング

データ・コントロール・パレットには、単独のデータ・オブジェクト属性のバインドに使用可能な各UIコンポーネントが用意されています。次の表を参照してください。

UIコンポーネント ドラッグ・アンド・ドロップ形式 ADFバインディング・タイプ
JClientテキスト・フィールド
Text Field 属性バインディング
JClient編集ペイン
Edit Pane 属性バインディング
JULabel
JULabel 属性バインディング
JULabel
Label For

Oracle ADF Business Componentsで使用し、属性のラベル・コントロール・ヒントを表示します。

属性バインディング
JClientパスワード・フィールド
Password Field 属性バインディング
JClientテキスト領域フィールド
Text Area 属性バインディング
JClientテキスト・ペイン
Text Pane 属性バインディング
JClientボタンLOV JClientLOVウィンドウ
Button LOV LOVバインディング
JClientチェック・ボックス
Check Box ブール・バインディング
フォーマット済編集フィールド
Formatted Edit Field フォーマット済テキスト・バインディング
JClient列挙型コンボ・ボックス
ComboBox 列挙モードのリスト・バインディング
JClient列挙型リスト
List 列挙モードのリスト・バインディング
JClient列挙型スピナー
Spinner 列挙モードのリスト・バインディング
JClient列挙型ラジオ・ボタン・グループ
Radio Button Group 列挙モードのリスト・バインディング
JClientプログレス・バー
Progress Bar 制限のある範囲バインディング
JClientスクロール・バー
Scrollbar 制限のある範囲バインディング
JClientスライダ
Slider 制限のある範囲バインディング