Oracle ADF Business Componentsデータソース用のHTMLレンダラには、次の2つのタイプがあります。
ADFに対応したWebページでは、次の作業を行うときにこれらのHTMLレンダラを使用できます。
注意: 「データ・コントロール・パレット」の入力レンダリングおよびレンダリング値要素によってJSPページに<adf:InputRender>
および<adf:Render>
タグがそれぞれ挿入されることにより、日付やオブジェクトなどの任意の種類のデータが表示されます。
特定の属性のレンダリングをカスタマイズするために、カスタムHTMLレンダラ・クラスを作成できます。カスタムHTMLレンダラ・クラスにより、oracle.jdeveloper.html.HTMLFieldRendererImpl
クラスが拡張されます。カスタムHTMLレンダラ・クラスの作成後、このレンダラ・クラスはレンダリング対象の属性にバインドする必要があります。
レンダラと属性のバインディングには、4つの異なるレベルがあります。
各レベルのバインディングには、固有レベルの優先順位と有効範囲があります。
必要に応じて、レンダラ・クラスをこれらのいずれかのレベルにバインドできます。
HTTPセッション・レベルのバインディング
HTTPセッション・レベルのバインディングは最も優先順位が低くなりますが、有効範囲は最も広くなります。Oracle ADF Business Componentsでは、属性タイプのデフォルトのバインディングはこのレベルに設定されます。interMediaレンダラ・クラスおよびinterMediaタイプのデフォルトのバインディングは、このレベルで定義されます。このバインディングの規則は、次のとおりです。
バインディングの名前フィールドは、属性クラス名とレンダラ・キー(RendererまたはEditRenderer)をあわせたものです。バインディングの値フィールドは、レンダラ・クラス名です。バインディングの名前フィールドでは、アンダースコア(_
)を使用して完全なクラス名のドット(.
)を置き換えてから、_Renderer
(表示レンダラの場合)または_EditRenderer
(編集レンダラの場合)を付けます。
次はその例です。
"oracle_ord_im_OrdImageDomain_Renderer"/"oracle.ord.html.OrdBuildURLRenderer"
これは、HTTP sessionオブジェクトに格納される名前と値のペアです。つまり、oracle.ord.im.OrdImageDomain
オブジェクトの表示レンダラがoracle.ord.html.OrdBuildURLRenderer
のオブジェクトであることを意味します。
もう1つ例を示します。
"oracle_ord_im_OrdImageDomain_EditRenderer"/"oracle.ord.html.OrdUploadFileRenderer"
これは、oracle.ord.im.OrdImageDomain
オブジェクトの編集レンダラがoracle.ord.html.OrdUploadFileRenderer
のオブジェクトであることを意味します。
これより上位のレベルのバインディングがない場合、ビジネス・コンポーネントはoracle.ord.im.OrdImageDomain
オブジェクトをレンダリングする必要があるため、VOまたはEOに属す属性とは関係なく、表示レンダラにはoracle.ord.html.OrdBuildURLRenderer
、編集レンダラにはoracle.ord.html.OrdUploadFileRenderer
を使用します。
カスタム・レンダラ・クラスを設定するには、HTTP sessionオブジェクトの名前と値のペアを変更します。次のコードSnippetでは、oracle.ord.im.OrdImageDomain
の表示レンダラをuser.CustomRenderer
に設定しています。
session.putValue("oracle_ord_im_OrdImageDomain_Renderer", "user.CustomRenderer");
エンティティ・オブジェクト・レベルのバインディング
エンティティ・オブジェクト・レベルのバインディングは、HTTPセッション・レベルのバインディングより優先されます。ただし、バインディングの有効範囲は制限されます。このバインディングが影響するのは、エンティティ・オブジェクトに定義されている属性のみです。
たとえば、HTTPセッション・レベルでは、OrdBuildURLRendererが表示レンダラとしてOrdImageDomainにバインドされています。エンティティ・オブジェクト・レベルでは、CustomRendererがEmpエンティティ・オブジェクトのphoto属性にバインドされています。photo属性は、OrdImageDomainタイプです。JSPページにphoto属性が表示される場合、ビジネス・コンポーネント・ランタイムはCustomRendererを選択し、OrdImageDomainオブジェクトをレンダリングします。ただし、Productエンティティ・オブジェクトにpicture属性がある場合、ビジネス・コンポーネント・ランタイムはOrdBuildURLRendererをそのまま使用し、picture属性をレンダリングします。
エンティティ・オブジェクト・レベルのバインディングを設定するには、次のようにします。
Renderer
」、「値」フィールドには「user.CustomRenderer
」と入力します。入力レンダラの場合、「名前」フィールドには「EditRenderer
」、「値」フィールドには「user.CustomRenderer
」と入力します。
ビュー・オブジェクト・レベルのバインディング
ビュー・オブジェクト・レベルのバインディングは、エンティティ・オブジェクト・レベルのバインディングより優先されます。ただし、バインディングの有効範囲はさらに制限されます。このバインディングが影響するのは、ビュー・オブジェクトに定義されている属性のみです。
たとえば、Emp1ViewとEmp2Viewという、Empエンティティ・オブジェクトに基づく2つのビュー・オブジェクトがあります。ビュー・オブジェクト・レベルでは、CustomRenderer1がEmp1Viewビュー・オブジェクトのphotoにバインドされています。エンティティ・オブジェクト・レベルでは、CustomRenderer2がEmpエンティティ・オブジェクトのphoto属性にバインドされています。photo属性は、OrdImageDomainタイプです。JSPページにEmp1Viewのphoto属性が表示される場合、ビジネス・コンポーネント・ランタイムはCustomRenderer1を選択し、OrdImageDomainオブジェクトをレンダリングします。ただし、Emp2Viewビュー・オブジェクトにpicture属性がある場合、ビジネス・コンポーネント・ランタイムはCustomRenderer2をそのまま使用し、picture属性をレンダリングします。
ビュー・オブジェクト・レベルのバインディングを設定するには、次のようにします。
Renderer
」、「値」フィールドには「user.CustomRenderer
」と入力します。編集レンダラの場合、「名前」フィールドには「EditRenderer
」、「値」フィールドには「user.CustomRenderer
」と入力します。
ADFタグ・レベルのバインディング
ADFタグ<adf:Render>
および <adf:InputRender>
では、データおよびHTMLレンダラ・オブジェクトにアクセスするためにデータソース・オブジェクトが使用されるため、データソースを使用してHTMLレンダラを設定できます。データソース・オブジェクトの有効範囲はHTTP REQUESTです。データ・タグ・レベルのバインディングは、ビュー・オブジェクト、エンティティ・オブジェクトおよびHTTPセッション・レベルのバインディングより優先されます。このレベルのバインディングは、現在の有効範囲であるHTTP REQUEST内のこのデータソース・オブジェクトを使用するすべてのデータ・タグに影響します。
public interface DataSource {
public void setDisplayFieldRenderer(AttributeDef attrDef, HTMLFieldRenderer rdr);
public void setDisplayFieldRenderer(int nIndex, HTMLFieldRenderer rdr);
public void setEditFieldRenderer(AttributeDef attrDef, HTMLFieldRenderer rdr);
public void setEditFieldRenderer(int nIndex, HTMLFieldRenderer rdr);
}
次の例は、user.CustomRenderer
と呼ばれるカスタムHTMLレンダラをビジネス・コンポーネントのRenderValueデータ・タグに設定する方法を示します。JSPページはDataTableComponent.jsp
です。このJSPページがDataTableタグによって使用されることにより、レコードが表示されます。<adf:RenderValue>
タグによって使用されるデータソース・オブジェクトには、HTMLレンダラ・オブジェクトを設定する必要があります。この例では、RenderValueタグによってdsBrowse
と呼ばれるデータソース・オブジェクトが使用されるため、レンダラ・オブジェクトをこのdsBrowse
データソース・オブジェクトに設定する必要があります。
データ・コントロール・パレットについて
ADFバインディングがあるJSPページでのレンダラの使用
Copyright © 1997, 2006, Oracle. All rights reserved.