ADF Business Componentsクライアント用のフォーマッタと書式マスクの定義

ADF Business Componentsのエンティティ・オブジェクトおよびビュー・オブジェクトの属性に設定する書式マスクを作成し、UIでの値の表示方法をカスタマイズできます。

コントロール・ヒントで使用するためフォーマッタをドメインにマップするには、次のようにします。

  1. oracle.jbo.format.Formatterクラスの拡張により、新規のフォーマッタを作成します。

    または、oracle.jbo.formatパッケージで提供されているデフォルトのフォーマッタの1つをカスタマイズすることもできます。JDeveloperに用意されているデフォルトのフォーマッタは、java.textパッケージで提供されているフォーマッタを集約したものです。

  2. オプションで、ドメイン作成ウィザードを使用して、フォーマッタをマップする新しいドメイン・クラスを作成します。

    フォーマッタをマッピングする上で新規のドメインを作成する必要はありません。ビジネス・コンポーネント・プロジェクトが、フォーマッタと同じデータ型のドメインを含んでいる場合は、既存のドメインを使用できます。使用できるデフォルトのドメイン・クラスのリストは、<jdev_install >/system/formatinfo.xmlファイルを参照してください。

  3. <jdev_install>>/systemフォルダにあるformatinfo.xmlファイルを編集して、フォーマッタ・クラスをドメイン・クラスにマッピングします。フォーマッタのXML定義にはDOMAIN CLASS(新規または既存)、FORMATTER(名前とクラスを含む)、およびフォーマッタ・クラスが指定するFORMAT定義のリストを含める必要があります。

コントロール・ヒントでの使用のために書式マスクをフォーマッタに追加するには、次のようにします。

  1. JDeveloper/system/フォルダのformatinfo.xmlファイルを編集し、書式マスクをフォーマッタに追加します。書式マスクのXML定義はFORMATTERおよびDOMAIN CLASSに属し、マスクのテキスト指定が含まれています。このテキスト指定は、フォーマッタにより実装されている同じタイプの属性に対して表示する、属性エディタの「コントロール・ヒント」パネルの「書式」ドロップダウン・メニューに表示されます。

コントロール・ヒントとして新しいフォーマッタまたは書式マスクを使用するには、次のようにします。

  1. ビジネス・コンポーネントのためのプロジェクトを作成します。

    ビジネス・コンポーネント・クライアント・アプリケーションのコントロール・ヒントを定義するには、エンティティ・オブジェクトおよびビュー・オブジェクトを持つプロジェクトが必要です。

  2. エンティティ属性またはビュー属性エディタで、書式を設定する属性を編集します。

    編集する属性は、フォーマッタによって実装されるクラスと同じタイプである必要があります。タイプが異なると、新しいフォーマッタは「書式の種類」ドロップダウン・リストに表示されません。

  3. ビジネス・コンポーネント・プロジェクトをコンパイルします。

APIを使用して、クライアント・アプリケーション内で属性を書式設定するには、次のようにします。

コントロール・ヒントAPIを使用することで、ビジネス・コンポーネント・クライアントで自動的にFormat Typeコントロール・ヒントを使用しない場合、属性値を書式設定できます。通常、これにはJava UIクライアントが含まれます。この場合、次の作業が必要です。

  1. 属性エディタで属性のコントロール・ヒントを定義します

  2. 属性オブジェクトの getFormattedAttribute()メソッドを使用して、書式設定された属性を取得します。

    
    import oracle.jbo.*; import java.util.Locale; 
    AttributeDef aDef = rs.getViewObject().findAttributeDef(sName); Row row = rs.getCurrentRow(); 
    LocaleContext locale = rs.getApplicationModule().getSession().getLocaleContext(); 
    if(aDef.getUIHelper().hasFormatInformation(locale)) 
      obj = aDef.getUIHelper().getFormattedAttribute(row, locale);         
  3. parseFormattedAttribute()メソッドを使用して、属性から書式設定を取り除きます。

  4. 属性値を表示します。

    if(aDef.getUIHelper().hasFormatInformation(locale))
       Object value = aDef.getUIHelper().parseFormattedAttribute(sValue, locale);


ADFクライアントのコントロール・ヒントについて