Oracle ADF Business Componentsデータソース用のHTMLレンダラには、次の2つのタイプがあります。
ADF対応Webページでは、次のような場合にこれらのHTMLレンダラを使用できます。
注意: データ・コントロール・パレットから得られたInput RenderとRender Valueの各要素は、日付やオブジェクトのような任意の種類のデータを表示するために、それぞれ<adf:InputRender>
と<adf:Render>
の各タグをJSPページに挿入します。
カスタム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セッション・オブジェクトに格納します。これは、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
オブジェクトのレンダリングが必要になると、属性がビュー・オブジェクトまたはエンティティ・オブジェクトのどちらに属すかにかかわらず、表示レンダラにoracle.ord.html.OrdBuildURLRenderer
、編集レンダラにoracle.ord.html.OrdUploadFileRenderer
が使用されます。
HTTPセッション・オブジェクトの名前と値のペアを変更することにより、カスタム・レンダラ・クラスを設定できます。次のコードは、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レンダラ・オブジェクトへのアクセスにDataSourceオブジェクトを使用しているため、DataSourceを使用してHTMLレンダラを設定できます。DataSourceオブジェクトにはHTTP REQUESTスコープがあります。データ・タグ・レベルのバインディングは、ビュー・オブジェクト・レベル、エンティティ・オブジェクト・レベルおよびHTTPセッション・レベルのどのバインディングよりも優先されます。現行のHTTP REQUESTスコープ内にある、このDataSourceオブジェクトを使用するすべてのデータ・タグが対象となります。
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>
タグで使用するDataSourceオブジェクトに、HTMLレンダラ・オブジェクトを設定する必要があります。この例では、RenderValueタグがdsBrowse
というDataSourceオブジェクトを使用しているため、レンダラ・オブジェクトをこのdsBrowse
というDataSourceオブジェクトに設定します。
Copyright © 1997, 2004, Oracle. All rights reserved.