ビュー・テクノロジにおけるデータ・バインディングとは、バックエンドのビジネス・サービス内のデータにバインドされたUIコンポーネントを作成する機能のことです。Oracle Application Development Framework(Oracle ADF)では、Oracle ADFモデル・レイヤーのオブジェクトによってデータ・バインディングが行われます。このOracle ADFバインディング・オブジェクトへは、実行時にWebアプリケーションおよびJavaクライアント・アプリケーションからアクセス可能です。アプリケーションでは、ビジネス・サービスのデータと、バインディング・オブジェクトをUIコンポーネントとしてレンダリングする方法を定義するメタデータによって、バインディング・オブジェクトがインスタンス化されます。
開発者がビュー・レイヤーを作成する際には、JDeveloperの設計時ツールを使用することでデータ・バインドされたクライアント作成のタスクを単純化できます。クライアント開発者は、コードを記述することなく、データ・バインドされたWebページとJavaクライアントを組み立てることが可能です。JDeveloperの設計時に、Oracle ADFモデル・レイヤーを併用することで、クライアント設計作業がサポートされます。
この章では、Oracle ADFと様々なビュー・テクノロジの統合について、概要を説明します。
ビュー・レイヤーは、J2EEアプリケーションのうち、アプリケーションのエンド・ユーザーが操作をする部分です。
Webアプリケーションの場合、UIは最終的にブラウザによってレンダリングされたHTMLとして表示され、表示されるデータはモデル・レイヤーのビジネス・サービスからプルされます。
スタンドアロンで実行されるJavaクライアント・アプリケーションの場合、UIはSwingコンポーネントで構成され、モデル・レイヤーのビジネス・サービスからデータがプッシュされます。
総合すると、これらのアプリケーションに対するビュー・レイヤーの役割は次のとおりです。
モデル・レイヤー内のOracle ADFバインディングをUIコンポーネントを介して参照します。
表示する各UIコンポーネントに対し、適切な形式でデータをレンダリングします。
コントローラ・レイヤーと通信し、データの編集やアプリケーションのページ・フローのナビゲートといったユーザーの操作を処理します。
オプションとして、UIコンポーネントへ入力されたデータの検証(クライアント側の検証と呼ばれる)を行います。
JDeveloperでJ2EEアプリケーションを作成する際には、設計時ツールを使用することでデータ・バインドされたクライアント作成のタスクを単純化できます。クライアント開発者は、コードを記述することなく、データ・バインドされたWebページとJavaクライアントを組み立てることが可能です。JDeveloperの設計時に、Oracle ADFモデル・レイヤーを併用することで、クライアント設計作業がサポートされます。Oracle ADFモデル・レイヤーの中身を理解していなくても、クライアント開発者は、選択されたビジネス・サービス内のアクションおよびデータにアクセスするUIコンポーネントを挿入できます。JDeveloperでは、データ・バインドされたクライアントの作成手順は、サポートされている次のクライアント・テクノロジすべてに共通です。
HTML要素、およびオプションでJSPカスタム・タグ・ライブラリのJSPタグを使用する汎用JSPページ
Oracle ADF UIX(JDeveloperで使用可能なOracleのXML Webプレゼンテーション・フレームワーク)をベースとしたWebページ
Swingコンポーネントで作成され、ADF JClient(JDeveloperで使用可能なOracleのJavaクライアント・フレームワーク)によって拡張されたJavaクライアント
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で独自のテンプレートを作成し、そのテンプレートをベースにしてアプリケーション・ページを構築できます。
クライアント開発者は、データ・コントロール・パレットを使用して、データ・バインドされたHTML要素(JSPページ用)、データ・バインドされたOracle ADF UIX要素(UIX XMLページ用)、およびデータ・バインドされたSwing UIコンポーネント(JClientパネル用)を作成します。データ・コントロール・パネルには、次の2つの選択リストがあります。
使用可能なビジネス・オブジェクト、メソッド、およびデータ・コントロール操作を階層状に表示したリスト
指定したビジネス・オブジェクト用に選択して表示中のクライアント文書にドロップできる、適切なビジュアル要素のドロップダウン・リスト
また、Webアプリケーション開発者の場合、データ・コントロール・パレットを使用してビジネス・サービスが提供するメソッドを選択し、Strutsページ・フローのデータ・ページおよびデータ・アクション上にドロップできます。
クライアント文書の場合、表示されるビジネス・サービスの階層構造は、次の要素によって決まります。
どのビジネス・サービスを、モデル・プロジェクト内のデータ・コントロールに登録したか。パレットには、登録した次のビジネス・サービスごとに別のルート・ノードが表示されます。
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生成のパネルやフォーム)
選択して開いた文書上にドロップする、ビジネス・サービスとビジュアル要素の組合せ
データ・コントロール・パレットでのクライアント文書のレイアウトが完了したら、個々のバインディング定義を表示してカスタマイズできます。
データ・コントロール・パレットのルート・ノードは、ビジネス・サービス用に登録されたデータ・コントロールを表します。データ・コントロール自体は選択できませんが、データ・コントロールがサポートする操作の中から選択できます。データ・コントロール専用の操作は、ルート・ノードのOperationsフォルダに表示されます。このタイプの操作は、Oracle ADFバインディング・コンテキスト全体に適用する操作を実行する場合に使用します。たとえば、Oracle ADF BC用のデータ・コントロールが提供するコミット操作やロールバック操作などです。
ルートのデータ・コントロール・ノードの下には、Beanベースのビジネス・サービスが、次のどちらかの形で表示されます。
属性: Beanプロパティなど。単純なスカラー値オブジェクト、構造化オブジェクト(Bean)またはコレクションを定義できます。
または
操作: Beanメソッドなど。値を戻すものと戻さないもの、メソッド・パラメータを取るものと取らないものがあります。
Webサービスはこの階層にはあてはまらず、データ・コントロール・パレットには操作のみが表示されます。
データ・コントロール・パレットでは、属性と操作は次の専用のアイコンで表示されます。2箇所以上に表示されるアイコンは様々なアクセッサ戻り型を表し、使用できるビジュアル要素も異なる場合があります。次の表を参照してください。
アイコン | 説明 | ビジュアル要素の選択肢 |
---|---|---|
![]() |
スカラー値(単純なIntegerまたはStringオブジェクトなど)を表す属性 | テキスト入力、チェック・ボックス、選択リストおよびラジオ・ボタンなど、属性がバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。 |
![]() |
スカラー値のコレクション(Integerの配列またはStringのリストを提供するものなど)を表すアクセッサ属性 | 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。 |
![]() |
属性と操作を含む構造化オブジェクトのコレクション(従業員オブジェクトのコレクションなど)を表すアクセッサ属性 | 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。 |
![]() |
操作のみで属性は含まない構造化オブジェクトのコレクション(サービスBeanのコレクションなど)を表すアクセッサ属性 | JSPの場合は読取り専用の動的表およびナビゲーション・ボタン、UIXの場合はさらに選択肢が増え、JClientの場合はコレクションがバインドされたコントロールすべてが選択できます。 |
![]() |
属性と操作を含む構造化オブジェクト(住所オブジェクトなど)を戻すアクセッサ属性 | 表、グラフ、ナビゲーション・ボタンおよびフォームなど、コレクションがバインドされたすべてのビジュアル要素。ただし、作成する文書タイプによって異なります。 |
![]() |
操作のみで属性は含まない構造化オブジェクト(サービス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バインディングを完全にサポートします。たとえばイテレータ・バインディングはメソッド戻り値で使用できません。
JDeveloper設計時ツールを使用してOracle ADFベースのアプリケーションを構築すると、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の場合には、アクセッサの戻り型はすべてわかっているため手動で指定する必要はありません。
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>
各種 .jsp
、.uix
または .java
ファイルは、クライアント・アプリケーションのプレゼンテーション・ドキュメントです。Oracle ADFアプリケーションのUIは、ビジュアル・エディタとデータ・コントロール・パレットを使用してレイアウトできます。データ・バインドされたUIコンポーネントを文書に挿入すると、バインディング式がページに追加され、それによって実行時にOracle ADFバインディング・オブジェクトにアクセスします。このバインディング式はソース・コードで直接編集でき、UIコンポーネントのバインディング・オブジェクトで使用可能なプロパティを使用して実行時の動作を指定できます。
DataBindings.cpx
ファイルは、Strutsページ・フロー・ダイアグラムのWebページをビジュアル・エディタで最初に開いた際に作成されます。.cpx
ファイルは、アプリケーション全体用のOracle ADFバインディング・コンテキストを定義します。.cpx
ファイルは、Oracle ADFバインディング・オブジェクトが実行時に作成される基となるメタデータを提供します。バインディング・コンテキストは、アプリケーション全体にわたるバインディングへのアクセスを提供します。このファイルはプロパティ・インスペクタで編集でき、パラメータの追加や削除、およびバインディング・コンテナ設定の変更を行えます。
pageName
UIModel.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 属性での参照も更新する必要があります。
|
UIModel.xml
ファイルは、ビュー/コントローラ・プロジェクト・フォルダの/src/view
ディレクトリに作成されます。アプリケーション・ナビゲータでは、「アプリケーション・ソース」フォルダのビュー・パッケージ内にこのファイルが表示されます。ファイル・ノードをダブルクリックすると、バインディング・コンテナ記述がXMLコード・エディタに表示されます。バインディング・コンテナ・パラメータを編集するには、プロパティ・インスペクタを使用し、構造ウィンドウで必要なパラメータを選択します。
ビジネス・サービス・オブジェクトMyAttribute1
、MyAttribute2
および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>
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>
バックエンドのビジネス・サービスへのデータ・バインディングを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ライフサイクル・オブジェクトの項には、コントローラ・レイヤーのオブジェクトが、表示用のデータをページへプッシュする前に、モデルの変更を検証してカスタム・イベントを処理する方法が説明されています。 |
Oracle ADF JClientアプリケーションでは、Swingコントロールとビジネス・サービスのデータソースとのデータ・バインディングを実現するために、UIコンテナに非常によく似た一連のJClinetオブジェクトが作成され、それらはJClientフォームの組立てに使用されます。これらのコンテナとそのJClient専用コードは、JClientフォーム・ウィザードを使用して最終的なアプリケーションを生成することで確認できます。たとえば、DeptおよびEmpというビュー・オブジェクトに基づくマスター/ディテール形式のフォームの場合、ウィザードは次のクラスを生成します。
FrameDeptViewEmpView1
: JClientFrame
(JClientPanel
インタフェースのダミー実装)を拡張します。
MDPanelDeptViewEmpView1
: JPanel
を拡張し、JClientPanel
を実装します。
PanelDeptView
: JPanel
を拡張し、JClientPanel
を実装します。
PanelEmpView1
: JPanel
を拡張し、JClientPanel
を実装します。
ここで、JPanel
はSwingクラス、JClientFrame
およびJClientPanel
は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次コンテナはすべて最初のフレームが作成したパネル・バインディング・オブジェクトを共有します。
データ・バインドされたコンテナを作成する最も簡単な方法は、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コンポーネントは、(ビジネス・サービスのコレクション、構造化オブジェクト、属性およびメソッドを格納した)特定のデータ・コントロール・オブジェクト用のブートストラップ・コードで生成されるため、データ・コントロール・オブジェクトに含まれるあらゆるビジネス・サービスにアクセスできます。
(JClientウィザードを使用しないで作成する)標準のフレームまたはパネルから開始し、それに対してJClientデータ・バインディングを有効にするには、該当するJClientブートストラップ・コードをメイン・フレームに追加し、次に2次ウィンドウのパネル・バインディングを次のように処理します。
親フレームとパネル・バインディングを共有する場合:
BusinessCompViewName(getPanelBinding()); frame.setVisible(true);
新しいフレームで独自のパネル・バインディングを定義する場合:
BusinessCompViewName(new (JUPanelBinding(getPanelBinding().getApplicationName(),null)); frame.setVisible(true);
最初のコールは、フレーム・オブジェクトを作成してパネル・バインディングを設定します。2番目のコールは、フレームを表示可能にします。
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()
メソッドへの引数としてのパネル・バインディング・オブジェクトを介して、データがバインドされます。
パネル・バインディングがどのように作成されてデータ・バインドされたパネルで使用されるかは、アプリケーション実行時に発生する処理から理解できます。まずJClientフレームが起動され、続いてJClientコードが次のように実行されます。
main()
メソッドがアプリケーションをブートストラップします。これにより、DataBindings.cpx
ファイルのエントリに基づいて、バインディング・コンテキストが開始され、Oracle ADFデータ・コントロールがロードされます。次に、初期化されたOracle ADFモデル・オブジェクトとともにバインディング・コンテキストがパネル・バインディングに渡され、Oracle ADFデータ・バインディングが作成されます。
フレームがアプリケーション・オブジェクトを取るコンストラクタを介して初期化されます(上の例のFrameDeptViewEmpView1
)。フレームが初期化された結果、パネル・バインディング・オブジェクト(JUPanelBinding
)がOracle ADFモデル定義に基づいて作成されます。この定義には、複数のデータ・コントロールのデータにバインドされたコンポーネントが含まれる場合があります。パネル・バインディングの作成は重要なJClient機能の1つで、Swingコンポーネント用のデータ・バインディングとデータ・パネルの連鎖を可能にします。
フレームまたはアプレット・クラスがレイアウト・パネル(上の例のMDPanelDeptViewEmpView1
)を初期化し、setBindingContext()
メソッドを使用して新しいレイアウト・パネル上にパネル・バインディングを設定します。
レイアウト・パネルのjbInit()
メソッドに、データ・ブラウズ用(子)パネルが作成されます。その際、JClientはこれらの子データ・パネル(上の例のPanelDeptView
とPanelEmpView1
)のバインディングに共有のバインディング・コンテキストを使用します。
コントロールから属性へのデータ・バインディングが、コントロールに指定されたJCleintモデルを使用して実行されます。(このバインディング情報はバインディング・コンテナXMLメタデータに格納されています。)
コントロール・バインディングがイベントを処理して、UIコントロールへのデータの移入と更新を行います。
ナビゲータでフレーム・クラスを選択して「実行」を選択すると、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();
フレームはそのコンストラクタによって初期化されます(デフォルトではコンストラクタに引数はありません)。アプリケーションのバインディング・コンテキストがフレームのsetBindingContext()
メソッドに渡されます。
フレームが初期化された結果、パネル・バインディング・オブジェクト(JUPanelBinding
)がOracle ADFモデル定義に基づいて作成されます。この定義には、複数のデータ・コントロールのデータにバインドされたコンポーネントが含まれる場合があります。パネル・バインディングの作成は重要なJClient機能の1つで、Swingコンポーネント用のデータ・バインディングとデータ・パネルの連鎖を可能にします。
データ・パネルまたはフォームのレイアウト終了後に、フォームにfetchAttributeProperties()
メソッドを定義すると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());
データ・ブラウズ用パネルには、ユーザーがデータの表示と編集を行うためのコントロールが含まれます。つまり、ここにはフィールドとして宣言およびインスタンス化される一連のコントロールが含まれます。データ・ブラウズ用パネルは、次のように親フレームまたはパネルから(setBindingContext()
コールを介して)そのパネル・バインディングを受け取ります。
panel.setBindingContext(panelBinding.getBindingContext());
親コンテナがデータ・ブラウズ用パネルとそのパネル・バインディングを作成した後、jbInit()
がコールされます。このjbInit()
メソッドで、コントロールが属性にバインドされます。次のコードを参照してください。
textFieldDeptName.setDocument((Document)panelBinding.bindUIControl ("DepartmentName, "textFieldDeptName"));
上のコードのtextFieldDeptName
はJTextField
コンポーネントで、基になっているビジネス・サービスのDepartmentName
属性にバインドされています。識別子DepartmentName
は、UIModel.xml
ファイル(バインディング・コンテナを定義するファイル)内の定義を参照します。バインディング・コンテナにはイテレータ・バインディングのリストが保存されています。各イテレータ・バインディングは、ビュー・オブジェクト・インスタンスと(オプションで)行セット・イテレータを指定します。
したがって、実行時にsetDocument()
がコールされると、JClientは指定された名前(DepartmentName
)でコントロール・バインディングを検索します。フォーム用のバインディング・コンテキストで見つかった場合には、JClientはそのコントロール・バインディングの関連するイテレータ・バインディングを使用して値にアクセスします。
データ・ブラウズ用パネルが初期化されると、レイアウト・パネルはパネル・バインディングに対してexecuteIfNeeded()
をコールして、Business Componentsデータソースへの問合せを実行します。
このexecuteIfNeeded()
メソッドはビュー・オブジェクトに対して問合せが実行済かどうかを判断し、実行されていない場合にはビュー・オブジェクトに対してexecuteQuery()
をコールします。問合せの実行によってデータベースからキャッシュへデータが取り出され、Oracle ADF Business Componentsの行セット・リスナー・イベントが起動します。最初に起動するイベントはRowSetListener.rangeRefreshed
です。このイベントはイテレータ・バインディングによって(RowSetListener
を実装し、それ自体リスナーとして登録しているため)取得されます。このイベントはレンジの行を取得し、コントロール・バインディングに対してupdateValuesFromRows()
をコールします。コントロール・バインディングは行からデータを取り出し、Swing APIを使用してデータをコントロールに割り当てます。その結果、Swing APIはパネルUIをデータで更新します。
バインドされたデータ・コレクション内のデータ・オブジェクトすべては使用しない場合や、一定数のデータ・オブジェクトをページに表示する場合には、データ・コレクションからフェッチするレンジ内のデータ・オブジェクトの数を設定できます。レンジは、コレクション内のデータ・オブジェクトのサブセットへのアクセスに使用するウィンドウを定義します。デフォルトのレンジ・サイズは、10個のデータ・オブジェクトをフェッチするレンジです。
ヒント: 一般には、1つのアプリケーション内の複数のバインディング・コンテナが参照するイテレータ・バインディングには、すべて同じレンジ・サイズを使用することをお薦めします。同じレンジ・サイズを使用すると、バインディング・コンテナが同じデータ・コレクションに対して不必要なフェッチ操作を生成することがなくなります。異なるレンジ・サイズが必要で、Oracle ADF Business Componentsを使用しているアプリケーションの場合、指定のコレクションに対してイテレータ・バインディングを作成して(ビュー・オブジェクトの行セット・イテレータ内で)一意な名前を指定する方法で、セカンダリの行セット・イテレータを宣言的に作成できます。
イテレータ・バインディングに対してレンジ・サイズを設定するには、次のようにします。
ビジュアル・エディタで文書を開いた状態で、「表示」→「構造」を選択して構造ウィンドウを開きます。
構造ウィンドウのツールバーから「UIモデル」をクリックし、ノードを展開してバインディングのリストを表示します。
レンジ・サイズを設定するイテレータ・バインディングを選択し、「表示」→「プロパティ・インスペクタ」を選択してプロパティ・インスペクタを開きます。
プロパティ・インスペクタの「レンジ・サイズ」フィールドで、値を編集して[Enter]を押します。デフォルト値は10
です。
値のうち、-1
と0
には特別な意味があります。-1
はコレクションから使用できるオブジェクトをすべて戻し、0
はコレクションがデータソースから取得したのと同じ数のオブジェクトを戻します。
データ・コントロール・パレットを使用して、next setまたはprevious set操作(Oracle ADF Business Componentsを使用している場合はボタンとして表示される)をページにドロップすると、イテレータのレンジ・サイズは、一度に10個のオブジェクトフェッチするようにデフォルトで設定されます。この操作により、イテレータに対するそれまでの設定内容が上書きされます。Oracle ADF Business Componentsで一意なレンジ・サイズを維持するには、プロパティ・インスペクタでイテレータ・バインディングに行セット・イテレータ名を指定します。
コレクションにセカンダリの行セット・イテレータを指定するには、次のようにします(Oracle ADF Business Componentsのみ)。
構造ウィンドウに「UIモデル」アイコンが表示された状態で、一意な行セット・イテレータ名を指定するイテレータ・バインディングを選択します。
バインディングの対象となる行セット・イテレータに一意な名前を指定すると、他のページのイテレータ・バインディングによってバインディング・コンテナのレンジ・サイズがリセットされることがなくなります。
プロパティ・インスペクタの行セット・イテレータのフィールドへ移動します。最初このフィールドに値はありません。
選択したイテレータ・バインディングのプロパティに一意な識別名を入力し、[Enter]を押します。
実行時には、バインディング・コンテナが、カスタマイズしたイテレータ・バインディングに対応する一意な行セットを作成します。
Oracle ADF対応のWebページを作成する場合、Oracle ADF Business Componentsに対してパラメータ化された問合せを使用できます。そのためには、入力フォームを使用し、ページのバインディング・コンテナに対する検索モードを有効に設定します。Oracle ADFバインディング・コンテナは、Oracle ADFイテレータ・バインディングによって指定されたビュー・オブジェクトに対し、フォームで指定された検索基準を使用してパラメータ化された問合せを実行し、検索操作をサポートします。
検索操作の実行後、バインディング・コンテナの検索モードは解除され、Webページは入力エントリ・フォームとして機能します。この方法で、バインディング・コンテナは、あるWebページに対して検索モードの有効/無効を切り替えます。
パラメータ化された問合せは、実行時に入力されるプレースホルダを含む問合せです。たとえば次のPL/SQL文では、min_salary
が実行時に入力されるパラメータ値に対するプレースホルダです。
SELECT ename, job, mgr FROM emp WHERE sal < :min_salary
検索モードの入力フォームは、Oracle ADFバインディングを使用して、バインドされたOracle ADF Business Componentsビュー・オブジェクト内の属性のうち、Queriable
プロパティがtrue
に設定されている各属性に対するフィールドを表示します。ビュー・オブジェクトは、ビジネス・コンポーネントによって実行される最初の問合せを定義します。
StrutsベースのWebアプリケーションでは、ユーザーは、次の手順で検索モード付きの入力フォームを使用します。
ユーザーによって表示された入力フォーム付きのWebページが、検索モードが有効な状態で実行されます。
たとえば、ユーザーがリンクをクリックして、検索モードが有効なページを開きます。
ユーザーがデータを絞り込むための検索基準を入力します。
ユーザーは検索基準に比較記号(>、<、=)を使用できます。同じビュー基準に含まれるすべての値が検索対象になります。
ユーザーがフォームの「実行」ボタンをクリックし、Strutsアクションに対するfind操作が開始され、アンカー付きの、ワイルドカード検索が実行されます。
この操作は検索列の最初の文字をアンカーとして使用し、入力された文字列で始まるすべての文字列を検索します。
Strutsアクションがもう1つのページへフォワードし、パラメータ化された問合せの結果が読取り専用の表としてそのページに表示されます。
クライアント開発者は、データ・コントロール・パレットを使用して、すでにデータ・バインドされているUIコンポーネントをWebページに挿入します。
(Strutsページ・フローを使用しない)Model 1のJSPページの場合、選択するビジュアル要素は、Oracle ADFタグ(カスタム・タグ・ライブラリ)とEL(式言語)構文を組み合せたコードSnippetとしてJSPページに表示されます。
StrutsベースのJSPページの場合、選択するビジュアル要素は、Strutsタグ(StrutsベースのWebアプリケーション用)、JSTLタグおよびEL(式言語)構文を組み合せたコードSnippetとしてJSPページに表示されます。
UIXページの場合、選択するビジュアル要素はUIX要素で、XML構文としてUIXページに表されるランタイム・コンポーネントです。
注意: データ・コントロール・パレットはプロジェクトに定義されているWebアプリケーションのタイプを検出し、StrutsベースのJSPプロジェクト、Model1のJSPプロジェクトまたはUIXプロジェクトに対して適切なコンポーネントを表示します。 |
以降、この項では、データ・コントロール・パレットで選択可能なビジュアル要素について説明します。
データ・コントロール・パレットには、(行セットを構成するデータ・オブジェクトが含まれる)データ・コレクション全体のバインドに使用可能な、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) |
データ・コントロール・パレットには、単独のデータ・オブジェクト属性のバインドに使用可能な各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 |
クライアント開発者は、データ・コントロール・パレットを使用して、すでにデータ・バインドされているUIコンポーネントをJClientで準備されたフォームまたはパネルに挿入します。
データ・コントロール・パレットには、(行セットを構成するデータ・オブジェクトが含まれる)データ・コレクション全体のバインドに使用可能な各UIコンポーネントが用意されています。次の表を参照してください。
UIコンポーネント | ドラッグ・アンド・ドロップ形式 | ADFバインディング・タイプ |
---|---|---|
![]() |
Table | 表バインディング |
![]() |
ComboBox | ナビゲーション・モードのリスト・バインディング |
![]() |
List(ScrollPane内) | ナビゲーション・モードのリスト・バインディング |
![]() |
Spinner | ナビゲーション・モードのリスト・バインディング |
![]() |
Radio Button Group | ナビゲーション・モードのリスト・バインディング |
![]() |
Navigation Bar | イテレータ・バインディング |
![]() |
Tree | ツリー・バインディング |
![]() |
Graph | グラフ・バインディング |
![]() |
Slider | スクロール・バインディング |
![]() |
Scrollbar | スクロール・バインディング |
データ・コントロール・パレットには、単独のデータ・オブジェクト属性のバインドに使用可能な各UIコンポーネントが用意されています。次の表を参照してください。
UIコンポーネント | ドラッグ・アンド・ドロップ形式 | ADFバインディング・タイプ |
---|---|---|
![]() |
Text Field | 属性バインディング |
![]() |
Edit Pane | 属性バインディング |
![]() |
JULabel | 属性バインディング |
![]() |
Label For
Oracle ADF Business Componentsで使用し、属性のラベル・コントロール・ヒントを表示します。 |
属性バインディング |
![]() |
Password Field | 属性バインディング |
![]() |
Text Area | 属性バインディング |
![]() |
Text Pane | 属性バインディング |
![]() ![]() |
Button LOV | LOVバインディング |
![]() |
Check Box | ブール・バインディング |
![]() |
Formatted Edit Field | フォーマット済テキスト・バインディング |
![]() |
ComboBox | 列挙モードのリスト・バインディング |
![]() |
List | 列挙モードのリスト・バインディング |
![]() |
Spinner | 列挙モードのリスト・バインディング |
![]() |
Radio Button Group | 列挙モードのリスト・バインディング |
![]() |
Progress Bar | 制限のある範囲バインディング |
![]() |
Scrollbar | 制限のある範囲バインディング |
![]() |
Slider | 制限のある範囲バインディング |