データ・アクセス・アプリケーションのビジネス層には、データベースからデータを取得したり、クライアントのアプリケーション層での使用のためにデータベースのデータ型をJavaのデータ型へ変換したりする機能が用意されています。また、あらゆるサービス・タイプのデータ項目をすべてのクライアントに一貫した方法で表示するための一元化機能も用意されています。コントロール・ヒントと呼ばれるこのメカニズムにより、サービス・タイプの開発者は次のような利点を得ることができます。
JDeveloperでは、サービス・タイプとの対話やコントロール・ヒントの利用が可能なビルトイン機能により、次のような特定のクライアント・アプリケーションをサポートしています。
ADF Business Componentsのコントロール・ヒント・メカニズム
ビジネス・コンポーネント層は、データベースにアクセスするクライアント・アプリケーションのために協調してトランザクション環境を提供するオブジェクトの集合体です。ビジネス・コンポーネントのクライアントは高レベル層のアプリケーション・モジュール・オブジェクトを介してOracle ADF Business Componentsテクノロジと対話します。データベースへのアクセスを開始する場合、クライアントはアプリケーション・データの状態を定義するアプリケーション・モジュール・インスタンスを取得し、データベースへの接続を提供します。ビジネス・コンポーネント開発者は、各アプリケーション・モジュールに対してビジネス・コンポーネント・プロジェクトで次のオブジェクトを作成します。
これらの基本的な機能の他にも、ビジネス・コンポーネントにはビジネス・コンポーネント層で利用できる様々な機能が用意されています。その1つは、特定の属性値をクライアントのUIでどのように表示するかを定義するコントロール・ヒント情報を格納する機能です。
ビジネス・コンポーネント・プロジェクトでのコントロール・ヒントの使用に関して重要なことは、コントロール・ヒントは定義オブジェクトのプロパティで、他のビジネス・コンポーネントがこれを継承できるという点です。たとえば、開発者がエンティティ・オブジェクト・レベルに設定した任意のコントロール・ヒントのプロパティは、そのエンティティ・オブジェクトを参照するビュー・オブジェクトに反映されます。一方、ビュー・オブジェクト・レベルにコントロール・ヒントを設定し、エンティティ・レベルのコントロール・ヒント・プロパティ定義をオーバーライドすることも可能です。ビュー・オブジェクトでコントロール・ヒント・プロパティを継承およびオーバーライドできるため、ビジネス・コンポーネント開発者は次のようにコンポーネントを開発できます。
コントロール・ヒント・プロパティについて
コントロール・ヒント・メカニズムは、次のコントロール・ヒント・プロパティをサポートします。
「ヒントの表示」は属性を表示するかどうかを決定します。ADF Swing設計時のウィザードでは、この属性をオーバーライドできます。
注意: データ・コントロール・パレットでは、このコントロール・ヒントを設定した属性が非表示になりません。アプリケーションで使用する属性のうち、実行時に表示されないものを選択することも可能です。
「ラベル・テキスト」は、データ項目の値に先行するプロンプトまたは表ヘッダーで使用されるテキストです。
「ヒント・テキスト」は、ヒントつまりポップアップ・テキストで使用されるテキストです。Webアプリケーションでは、HTML ALT属性の値として表示されます。
「書式の種類」は、データ項目を表示する際のフォーマッタを定義します。フォーマッタは、基本的にJDeveloper/system/formatinfo.xml
ファイルで定義できる書式マスクの集合です。
「書式」は選択したフォーマッタが使用する特定の書式マスクです。
「コントロール・タイプ」は、クライアントのUIでデータ項目を表示する際に使用するコントロール・タイプを選択します。「編集」を選択するとコントロールを編集可能にでき、「日付」を選択するとカレンダが表示されます。「デフォルト」を選択すると、クライアントが最適と判断するコントロールが選択されます。
「表示幅」は、データ項目を表示するコントロールの文字幅を定義します。
「表示高さ」は、データ項目を表示するコントロールの文字の行数を定義します。
「フォームのタイプ」は、「ディテール」モードまたは「サマリー」モードのどちらで属性を表示するかどうかを決定します。「ディテール」モードは詳細に、「サマリー」モードは簡潔に表示します。このプロパティは、ADF Swingアプリケーションでのみサポートされます。ビジネス・コンポーネントWebアプリケーションでは使用できません。
コントロール・ヒントの設計時のサポートについて
設計時のコントロール・ヒントのサポートは、次の2つのレベルで用意されています。
設計時のウィザードとダイアログには、属性のコントロール・ヒントを設定および編集するための機能が用意されています。ADF Business Componentsの場合、これはエンティティ・オブジェクトとビュー・オブジェクトの両方に適用されます。属性のコントロール・ヒントを編集するには、構造ウィンドウにデータ・コントロールの構造定義ファイル内の属性を表示し、右クリックして属性エディタで属性を開きます。
ADF Business Componentsの場合、エンティティ属性およびビュー属性エディタでは、コントロール・ヒントは現在の属性のプロパティとして表示されます。「コントロール・ヒント」タブを使用すると、コントロール・ヒント・プロパティを編集できます。「コントロール・ヒント」タブで設定後、「プロパティ」タブをクリックすると属性に追加されたヒントを表示できます。
次の表は、コントロール・ヒント名と、様々なビジネス・コンポーネント・クライアントがそれらのコントロール・ヒントを使用するかどうかを示しています。
ヒント名 | JSPページ(「注意」を参照) | JSFページ | ADF Swing Java UI |
---|---|---|---|
ラベル・テキスト |
はい |
はい |
はい |
ヒント・テキスト |
はい |
はい |
はい(「注意2」を参照) |
書式および書式マスク |
はい |
はい |
はい |
ヒントの表示 |
はい |
はい |
はい |
コントロール・タイプ |
はい |
はい |
いいえ |
表示幅および表示高さ |
はい |
はい |
はい |
フォーム・タイプ |
適用しない |
適用しない |
はい |
注意1: Strutsタグ・ライブラリとJSTLタグを使用して式を評価する入力フォーム・ページでは、コントロール・ヒントはサポートされていません。詳細は、次の項を参照してください。
注意2: ADF Swingアプリケーションでは、基礎となるエンティティ・オブジェクト属性またはビュー・オブジェクト属性について入力されたすべてのヒント・テキストが無視されます。この問題の対処方法として、クライアント・コードにヒント・テキストを設定できます。次の例では、Deptno属性に対するヒント・テキストの設定方法を示しています。mDeptno.setToolTipText(panelBinding.findCtrlValueBinding("Deptno").getTooltip());
コントロール・ヒントの実行時のサポートについて
現在のところ、Strutsフォームで表示されるJSTLタグを使用して、他のタグの属性に値を提供することはできません。JSP 1.2にはこの制限があるので、Struts入力フォームでは、コントロール・ヒントを使用して入力要素の表示プロパティを設定できません。たとえば、現在のところ、次のコンストラクションはサポートされていません。
<html:text property="EmpName"
size='<c:out value="${bindings.EmpName.displayWidth}"/>'
/>
JSPページとADFバインディングを使用する場合、次の例に示すようにHTMLタグを使用して、コントロール・ヒントを指定できます。
<textarea name="<c:out value='${bindings.Dname.path}'/>"
cols="<c:out value='${bindings.Dname.displayWidth}' />"
rows="<c:out value='${bindings.Dname.displayHeight}' />">
<c:out value='${bindings.Dname}'/>
</textarea>
JSFページを使用する場合、ADF Facesコンポーネントに対して指定する日付パターン(selectInputDate
など)は、コントロール・ヒントの中で指定した日付書式に一致している必要があります。同じパターンを使用しない場合、実行時エラーが発生します。
実行時のコントロール・ヒントのサポートは、次のように2つのレベルで用意されています。
実行時には、クライアントは属性値を表示する方法を決定するため自動的にコントロール・ヒントを利用します。コントロール・ヒント・プロパティがクライアントでサポートされている場合は(前述の表を参照)、UIのカスタマイズに必要な処理は特にありません。この場合、UIのカスタマイズはビジネス・コンポーネント自身の一元化されたコントロール・ヒントで行われます。
ADF Swing(Java UI)クライアントの場合、UI開発者はコントロール・ヒントAPIにより、コントロール・ヒント定義に直接アクセスできます。コントロール・ヒントは属性オブジェクトのプロパティですが、特定のコントロール・ヒントを取得するためにgetProperty()
メソッドを使用する方法はお薦めできません。かわりに、コントロール・ヒントAPIのメソッドの使用をお薦めします。たとえば、UI開発者は次のようにAttributeHintsインタフェースのメソッドを使用して、ラベル、ヒント・テキストおよびコントロール・タイプにアクセスします。
import oracle.jbo.*
ViewObject vo = am.findViewObject("DeptView");
AttributeDef aDef = vo.findAttribute("DeptNo");
LocaleContext locale = am.getSession().getLocaleContext();
String sLabel = aDef.getUIHelper().getLabel(locale);
String sTooltip = aDef.getUIHelper().getTooltip(locale);
Int nControlType = aDef.getUIHelper().getControlType(locale);
「書式の種類」コントロール・ヒントについて
書式コントロール・ヒントの「書式の種類」および「書式」により、ビジネス・コンポーネント開発者はビジネス・コンポーネントのドメイン・クラスを介して属性フォーマッタを利用できます。ビジネス・コンポーネント・プロジェクトでは、開発者は次の場合にフォーマッタをビジネス・コンポーネントのドメインにマップできます。
各ドメイン・クラスは任意の数のフォーマッタを持つことができます。1つのフォーマッタは任意の数のマスクをサポートできます。属性エディタには、使用可能なフォーマッタと対応する値のマスクのリストが候補として表示されます。使用可能なフォーマッタへのドメイン型のマップは、<jdev_install >/system###/formatinfo.xml
ファイルで維持されます。ビジネス・コンポーネント開発者はドメインの作成にドメイン・ウィザードを使用しますが、現在、JDeveloperではformatinfo.xml
ファイルでのドメイン・フォーマッタおよびマスクの自動生成はサポートしていません。新規ドメイン型を作成し、その書式を使用可能なフォーマッタのリストに追加する場合、開発者はこのファイルの内容を手作業で編集する必要があります。
実行時には、フォーマッタはユーザー指定値が値のマスク全体またはマスクのRAW書式と一致することを期待します。たとえば、通貨書式の場合、マスクが$0000.00であれば、値$3000.00または3000.00はどちらも有効で、2番目の値は値のマスクのRAW書式に対応します。同じ値のマスクの場合、値$3,000.00(カンマあり)を入力すると「JBO-25009: 型:oracle.jbo.domain.Numberで値:$3,000.00のオブジェクトを作成できません。」という例外が発生することに注意してください。これは、値がリテラル・マスク($0000.00)またはRAW書式(0000.00)と一致しないためです。
ADFクライアントでの表示メタデータの使用
ADFクライアントUIのカスタマイズ
ADFクライアント用のフォーマッタと書式マスクの定義
Copyright © 1997, 2006, Oracle. All rights reserved.