この付録は、データ・モデル・プロジェクトとユーザー・インタフェース・プロジェクトで作成されるOracle ADFメタデータ・ファイルのリファレンスです。この情報は、これらのファイルに定義されたメタデータの内容を編集する場合に使用できます。
この付録には、次の項が含まれます。
Oracle ADFアプリケーションのメタデータ・ファイルは、アプリケーションによって使用される構造化XMLファイルです。次の目的で使用されます。
アプリケーションのOracle ADFデータ・コントロールで使用できるパラメータ、メソッドおよび戻り値を指定します。
Oracle ADFバインディング・コンテキストのオブジェクトを作成し、それらのオブジェクトの実行時動作を定義します。
JSFおよびOracle ADF FacesのUIコンポーネントに関する構成情報を定義します。
J2EEアプリケーション・サーバーのアプリケーション構成情報を定義します。
ADFバインディングの場合、バインディング固有のエディタを使用して、バインディング・オブジェクトの実行時プロパティをカスタマイズできます。バインディング固有のエディタを開くには、ページ定義ファイルの構造ウィンドウを表示して、ポップアップ・メニューから「プロパティ」を選択します。
また、JDeveloperのXMLエディタでは、任意のメタデータ・ファイルの内容を参照および編集できます。これらのファイルを操作する最も簡単な方法は、構造ウィンドウとプロパティ・インスペクタを使用することです。構造ウィンドウで要素を選択し、プロパティ・インスペクタで(通常はドロップダウン・メニュー・オプションを選択して)その要素の属性値を定義します。このリファレンスは、Oracle ADF固有の要素に選択できるオプションを理解するために使用できます。
Oracle ADFメタデータ・ファイル間の関係により、モデル・データ・プロジェクトとユーザー・インタフェース・プロジェクト間の依存性が定義されます。これらの依存性は、各ファイルのXML要素内のファイル参照として定義されます。
図A-1は、EJBセッションBeanをJavaBeansおよびJSF Webページに対するサービス・インタフェースとして使用しているOracle ADFアプリケーションで操作する可能性のあるXMLメタデータ・ファイルの階層構造を示しています。
Oracle ADFアプリケーションに必要とされる次のXML構成ファイルは、データ・モデル・プロジェクトに表示されます。
DataControls.dcx
は、アプリケーションのデータ・コントロール用のレジストリです。このファイルには、特定のサービス(EJB、JavaBean、XML、Webサービスなど)を操作するのに必要なデータ・コントロールのタイプや実行時のデータ・コントロールの作成方法に関する情報が含まれます。
DataControls.dcx
ファイルで構成可能な要素の詳細は、A.4項を参照してください。
構造定義ファイルは、アプリケーションの各ビジネス・サービス・タイプに対応する構造定義XMLファイルです。このファイルには、特定のサービス(EJB、JavaBean、XML、Webサービスなど)を操作するのに必要なデータ・コントロールのタイプや実行時のデータ・コントロールの作成方法に関する情報が含まれます。たとえば、EJBセッションBeanをJavaBeansに対するサービス・インタフェースとして使用するSRDemoアプリケーションの場合、次のファイルがデータ・モデル・プロジェクトに表示されます。
<sessionbeanname>
.xml
: サービス・インタフェースに関連する各データ型の構造定義XMLファイルです。ファイル名は、そのデータ型の名前と一致します。EJBサービス・インタフェースの場合、サービス・クラスそれ自体に対する構造定義ファイルが1つ存在します。
<beanname>
.xml
: サービス・インタフェースにメソッド戻り値またはメソッド引数として出現する各JavaBeanの構造定義XMLファイルです。
構造定義ファイルで構成可能な要素の詳細は、A.5項を参照してください。
adfm.xml
は、JDeveloperによる設計時のデータ・コントロール用のレジストリです。データ・コントロール・パレットでは、このファイルを使用して、データ・モデル・プロジェクトに表示されるDataControls.dcxファイルの場所を特定します。adfm.xml
ファイルの例は、A.4.3項を参照してください。
Oracle ADFアプリケーションの標準的な次のXML構成ファイルは、ユーザー・インタフェース・プロジェクトに表示されます。
DataBindings.cpx
: このファイルには、pageMap(ページ定義参照)とデータ・コントロール参照が含まれます。このファイルは、(構造ウィンドウまたはデータ・コントロール・パレットで)UIコンポーネントのデータ・バインディングを最初に作成したときに作成されます。DataBindings.cpx
ファイルでは、アプリケーション全体のOracle ADFバインディング・コンテキストを定義します。バインディング・コンテキストは、アプリケーション全体にわたるバインディングへのアクセスを提供します。DataBindings.cpx
ファイルには、各WebページのOracle ADFバインディングのメタデータを定義する<pagename>
PageDef.xml
ファイルへの参照も含まれます。
DataBindings.cpx
ファイルで構成可能な要素の詳細は、A.6項「DataBindings.cpx」を参照してください。
<pagename>
PageDef.xml
: ページ定義XMLファイルです。このファイルは、データ・コントロール・パレットまたは構造ウィンドウを使用して新規Webページを設計するたびに作成されます。これらのXMLファイルには、WebページのUIコンポーネントにデータを移入するバインディングを作成するためのメタデータが含まれます。ADFバインディングを参照するすべてのWebページに対して、バインディング定義を含む専用のページ定義ファイルが必要です。
<pagename>
PageDef.xml
ファイルで構成可能な要素の詳細は、A.7項「<pageName>PageDef.xml」を参照してください。
JSFアプリケーションに必要とされる次のXML構成ファイルは、ユーザー・インタフェース・プロジェクトに表示されます。
web.xml
: アプリケーション構成の一部は、J2EEアプリケーション・デプロイメント・ディスクリプタのweb.xml
の内容によって決定されます。web.xml
ファイルでは、サーバーが認識する必要のあるアプリケーションのすべての設定を定義します。このファイルで、ADFBindingFilterを設定してOracle ADFデータ・バインディングを構成します。追加の実行時設定には、サーブレットの実行時パラメータと初期化パラメータ、カスタム・タグ・ライブラリの場所、およびセキュリティ設定が含まれます。
ADFデータ・バインディングおよびJSF構成オプションの詳細は、A.8項「web.xml」を参照してください。
faces-config.xml
: このJSF構成ファイルでは、バリデータ、コンバータ、マネージドBean、ナビゲーション・ルールなどのJSFアプリケーション・リソースを登録します。アプリケーションには複数の構成リソース・ファイルを割り当て、任意の名前を付けることができますが、通常、ファイル名にはfaces-config.xml
を使用します。
JSF構成オプションの詳細は、A.10項「faces-config.xml」を参照してください。
adf-faces-config.xml
: このADF Faces構成ファイルでは、アクセシビリティ・レベル、カスタム・スキン、拡張デバッグ機能、右から左へのページ・レンダリングなど、ADF Faces固有のユーザー・インタフェース機能を構成します。
ADF Faces構成オプションの詳細は、A.11項「adf-faces-config.xml」を参照してください。
図A-2は、EJBセッションBeanをJavaBeansに対するサービス・インタフェースとして使用しているWebアプリケーションで操作する可能性のあるXMLメタデータ・ファイルの階層構造を示しています。実行時には、これらのファイルから作成されたオブジェクトが次の順序で対話を行います。
ADFのデータ・バインドされたWebページに対する最初のリクエストが発生すると、サーブレットは、web.xml
ファイルに設定されているOracle ADFサーブレット・フィルタのADFBindingFilter
を登録します。
バインディング・フィルタは、web.xml
ファイルからCpxFileName
初期化パラメータを読み取ってバインディング・コンテキストを作成します。
バインディング・コンテキストは、DataBindings.cpxファイルの<pagemap>
要素による参照に従って<pagename>PageDef.xml
ファイルをロードし、バインディング・コンテナを作成します。
バインディング・コンテナのprepareModelフェーズで、すべての実行可能項目が準備およびリフレッシュされます。
DataControls.dcx
ファイルに含まれるデータ・コントロール・ファクトリによって指定されるセッションBeanファサードの名前付きメソッドを参照することにより、イテレータ・バインディングが実行されます。
バインディング・コンテナは、マップされたWebページの<pagename>PageDef.xml
ファイルの<bindings>
セクションに定義されたバインディングも作成します。
#{bindings}
という式を使用した式言語(EL)に基づくADFバインディングへのWebページ参照が、そのページのバインディング・コンテナにアクセスすることで解決されます。
ページは、バインディング・コンテナのバインディングから使用可能なデータを取得します。
DataControls.dcxファイルは、ビジネス・サービスにデータ・コントロールを作成すると、データ・モデル・プロジェクト・フォルダの/src/packageディレクトリに作成されます。モデル・プロジェクトごとに1つの.dcxファイルが割り当てられます。.dcxファイルは、クライアントと使用可能なビジネス・サービス間の対話を支援するOracle ADF Modelレイヤーのデータ・コントロール・クラスを識別します。プロジェクトで使用されるデータ・コントロール・タイプごとに1つのデータ・コントロール定義が存在します。
JDeveloperでの設計時には、DataControls.dcxファイルのパス情報が、モデル・プロジェクトのMETA-INFフォルダに含まれるadfm.xmlレジストリ・ファイルで管理されます。データ・コントロールを作成すると、このファイルも自動的に更新されます。
EJB、WebサービスおよびBeanベースのデータ・コントロールの場合、このファイルをプロパティ・インスペクタで編集してデータ・コントロール設定を変更できます。たとえば、.dcxファイルを使用して、各データ・コントロールのグローバル・プロパティをカスタマイズできます(ソートの有効化と無効化など)。各属性の詳細は、表A-1を参照してください。
アプリケーション・ナビゲータでは、「アプリケーション・ソース」フォルダのデフォルト・パッケージ内に.dcxファイルが表示されます。ファイル・ノードをダブルクリックすると、XMLソース・エディタにデータ・コントロール記述が表示されます。データ・コントロール属性を編集するには、プロパティ・インスペクタを使用して、構造ウィンドウで適切な属性を選択します。
DataControls.dcxファイルのトップレベル要素は、<DataControlConfigs>です。
<DataControlConfigs xmlns="http://xmlns.oracle.com/adfm/configuration" version="10.1.3.35.65" Package="oracle.srdemo.model" id="DataControls">
ここでのXMLネームスペース属性(xmlns)により、データ・コントロールの実行時のバインド先となるURIを指定します。パッケージ名のみ編集可能であり、他のすべての属性はここに示したとおりの値に設定する必要があります。
図A-3は、トップレベル要素の<DataControlConfigs>を示しています。BaseDataControl要素は、実際のデータ・コントロール・タイプのプレースホルダであることに注意してください。SRDemoアプリケーションでは、データ・コントロール・タイプはAdapterDataControlです。
図A-4は、プレースホルダの<BaseDataControlType>要素と置き換えられた<AdapterDataControl>要素を示しています。データ・コントロールを作成したビジネス・サービスごとに、独自の<AdapterDataControl>定義が割り当てられます。
子要素の使用方法は、次のとおりです。
<AdapterDataControl>: データ・コントロールのプロパティを定義するために、アダプタ・データ・コントロールによって作成されます。データ・コントロール定義のプロパティは、データ・コントロールが作成されるビジネス・サービスに応じて変化します。
<CreatableTypes>: コンストラクタ・メソッドをコールできるタイプを定義します。たとえば、EJB、TopLinkオブジェクト、JavaBean、Webサービスなどをタイプとして使用できます。子要素の<TypeInfo>が1つ以上含まれます。
<Source>: データ・コントロールを作成するサービスを定義します。アダプタ・ベースのデータ・コントロール(EJBセッション・ファサードのデータ・コントロールなど)の場合にのみ使用します。EJBセッション・ファサードの場合、子要素の<ejb-definition>が含まれます。
表A-1に、DataControls.dcxの各要素の属性を示します。
表A-1 DataControls.dcxファイルのメタデータ
要素の構文 | 属性 | 属性の説明 |
---|---|---|
BeanClass |
完全修飾パッケージ名。データ・コントロールの作成されるクラスを識別します。EJBセッション・ファサードの場合は、セッションBeanです。 |
|
Definition |
データ・コントロールの作成されるクラスを識別します。この属性は、下位互換性を目的としています。 |
|
FactoryClass |
完全修飾パッケージ名。データ・コントロールのインスタンスを作成するADFの実行時ファクトリ・クラスを識別します。 |
|
id |
一意の識別子。DataBindings.cpxファイルにより参照されます。 |
|
ImplDef |
内部使用。 |
|
SupportsFindMode |
ADFイテレータ・バインディング・オブジェクトを準備する際に、ユーザー指定条件付きの問合せの準備をデータ・コントロールでサポートするかどうかを指定します。EJBセッション・ファサードBeanの場合、デフォルトはfalseです。アプリケーションのすべてのイテレータ・バインドWebページが検索モードで動作することをグローバルに許可しない場合は、falseに設定します。 |
|
SupportsRangeSize |
ADFイテレータ・バインディング・オブジェクトを準備する際に、データ・オブジェクトのユーザー定義番号をデータ・コントロールで戻すかどうかを指定します。EJBセッション・ファサードBeanの場合、デフォルトはfalseです。 |
|
SupportsResetState |
この属性は非推奨です。状態のリセットをデータ・コントロールでサポートするかどうかを指定します。EJBセッション・ファサードBeanの場合、デフォルトはfalseです(サポートされません)。 |
|
SupportsSortCollection |
サービス・コレクションのデータ・オブジェクト・ソートをデータ・コントロールでサポートするかどうかを指定します。EJBセッション・ファサードBeanの場合、デフォルトはfalseです(この機能は、EJBセッション・ファサードのfinderメソッドにより公開されるコレクションでサポートされません)。 |
|
SupportsTransaction |
ビジネス・サービスの作成、編集および削除操作をデータ・コントロールでサポートするかどうかを指定します。EJBセッション・ファサードBeanの場合、デフォルトはfalseです。 |
|
SupportsUpdates |
書込み操作をデータ・コントロールでサポートするかどうかを指定します。EJBセッション・ファサードBeanの場合、デフォルトはtrueです。 |
|
xmlns |
データ・コントロールの構成ネームスペースを識別するURI。実行時に、データ・コントロール・オブジェクトは、ネームスペース内の各要素の定義オブジェクトを作成する実行時ファクトリの場所を特定します。 |
|
FullName |
Createableタイプの完全タイプ名を識別します。この要素は、データ・コントロール・パレットの「コンストラクタ」フォルダにコンストラクタが表示されるタイプにのみ定義されます。 |
|
ejb-business-interface |
このセッションBeanとの通信に使用されるリモートまたはローカル・インタフェース。 |
|
ejb-interface-type |
localまたはremoteのいずれか。 |
|
ejb-name |
EJBの名前。 |
|
ejb-type |
EJBのタイプ(現在はSessionのみサポート)。 |
|
ejb-version |
3.0、2.1、2.0のいずれか。 |
|
xmlns |
内部使用専用で、スキーマ・ネームスペースを参照します。この属性は更新できません。 |
例A-1は、サンプルのデータ・コントロール定義ファイルの構文を示しています。AdapterDataControlでは2つのセッションBean(SRPublicFacadeとSRAdminFacade)が指定されていることに注意してください。
例A-1 DataControls.dcxファイルの例
<?xml version="1.0" encoding="UTF-8" ?> <DataControlConfigs xmlns="http://xmlns.oracle.com/adfm/configuration" version="10.1.3.35.65" Package="oracle.srdemo.model" id="DataControls"> <AdapterDataControl id="SRPublicFacade" FactoryClass="oracle.adf.model.adapter.DataControlFactoryImpl" ImplDef="oracle.adfinternal.model.adapter.ejb.EjbDefinition" SupportsTransactions="true" SupportsSortCollection="false" SupportsResetState="false" SupportsRangesize="false" SupportsFindMode="true" Definition="oracle.srdemo.model.SRPublicFacade" BeanClass="oracle.srdemo.model.SRPublicFacade" xmlns="http://xmlns.oracle.com/adfm/datacontrol" SupportsUpdates="true"> <CreatableTypes> <TypeInfo FullName="oracle.srdemo.model.entities.Product"/> <TypeInfo FullName="oracle.srdemo.model.entities.ExpertiseArea"/> <TypeInfo FullName="oracle.srdemo.model.entities.ServiceHistory"/> <TypeInfo FullName="oracle.srdemo.model.entities.User"/> <TypeInfo FullName="oracle.srdemo.model.entities.ServiceRequest"/> </CreatableTypes> <Source> <ejb-definition ejb-version="3.0" ejb-name="SRPublicFacade" ejb-type="Session" ejb-interface-type="local" ejb-business-interface="oracle.srdemo.model.SRPublicFacade" xmlns="http://xmlns.oracle.com/adfm/adapter/ejb"/> </Source> </AdapterDataControl> <AdapterDataControl id="SRAdminFacade" FactoryClass="oracle.adf.model.adapter.DataControlFactoryImpl" ImplDef="oracle.adfinternal.model.adapter.ejb.EjbDefinition" SupportsTransactions="true" SupportsSortCollection="false" SupportsResetState="false" SupportsRangesize="false" SupportsFindMode="true" Definition="oracle.srdemo.model.SRAdminFacade" BeanClass="oracle.srdemo.model.SRAdminFacade" xmlns="http://xmlns.oracle.com/adfm/datacontrol" SupportsUpdates="true"> <CreatableTypes> <TypeInfo FullName="oracle.srdemo.model.entities.ServiceHistory"/> <TypeInfo FullName="oracle.srdemo.model.entities.User"/> <TypeInfo FullName="oracle.srdemo.model.entities.ServiceRequest"/> <TypeInfo FullName="oracle.srdemo.model.entities.Product"/> <TypeInfo FullName="oracle.srdemo.model.entities.ExpertiseArea"/> </CreatableTypes> <Source> <ejb-definition ejb-version="3.0" ejb-name="SRAdminFacade" ejb-type="Session" ejb-interface-type="local" ejb-business-interface="oracle.srdemo.model.SRAdminFacade" xmlns="http://xmlns.oracle.com/adfm/adapter/ejb"/> </Source> </AdapterDataControl> </DataControlConfigs>
adfm.xml
ファイルは、JDeveloperによる設計時のデータ・コントロール用のレジストリです。たとえば、データ・コントロール・パレットでは、このファイルに含まれるパスを使用して、モデル・プロジェクトで使用されるデータ・コントロールの場所を特定します。データ・コントロールを作成すると、データ・モデル・プロジェクトのMETA-INFフォルダに含まれるこのファイルも自動的に更新されます。
例A-2は、データ・コントロール・レジストリの構文を示しています。
構造定義ファイルは、データ・コントロールの構造と、読取り専用および更新可能な属性(コレクション)の構造をサポートするために作成されます。
セッションBeanをOracle ADFデータ・コントロールとして登録すると、すべてのセッションBeanに対応するXML定義ファイルがModelプロジェクトに作成されます。構造定義ファイルには、セッションBeanと同じ名前が付けられますが、拡張子は.xmlです。構造定義は、各EJBエンティティおよびTopLink POJOに対しても作成されます。
図A-5は、JavaBean構造定義のトップレベル定義を示しています。
構造定義のトップレベル要素は、<JavaBean>です。
<JavaBean xmlns="http://xmlns.oracle.com/adfm/beanmodel" version="10.1.3.35.83" id="<beanname>" BeanClass="oracle.srdemo.model.entities.<beanname>" Package="oracle.srdemo.model.entities" isJavaBased="true">
ここでのXMLネームスペース属性(xmlns)により、構造定義の実行時のバインド先となるURIを指定します。パッケージ名のみ編集可能であり、他のすべての属性はここに示したとおりの値に設定する必要があります。
図A-6は、<JavaBean>要素の<Attribute>子要素を示しています。この子要素により、Bean属性の構造定義を指定します。
図A-7は、<JavaBean>要素の<AccessorAttribute>子要素を示しています。この子要素により、オブジェクトを戻す属性の構造情報を定義します。
図A-8は、<JavaBean>要素の<MethodAccessor>子要素を示しています。この子要素により、オブジェクトまたはコレクションを戻すメソッドの構造情報を定義します。属性アクセッサとは異なり、メソッド・アクセッサではパラメータを定義できます。
表A-2に、Beanの構造定義の属性を示します。Beanにより指定される属性またはメソッドごとに独自の<Attribute>、<AccessorAttribute>および<MethodAccessor>定義があり、メソッド・パラメータごとに独自の<ParameterInfo>定義があります。
表A-2 Beanの構造定義の属性
要素の構文 | 属性 | 属性の説明 |
---|---|---|
AttrLoad |
内部使用。 |
|
DefaultValue |
このフィールドは、変数およびADF Business Componentsデータ・コントロールでのみ使用されます。Beanの場合、Beanそれ自体が新規Beanインスタンスを作成するため、すべてのプロパティのデフォルトは、その新規インスタンスで適切に設定されるとみなされます。 |
|
DiscrColumn |
内部使用。 |
|
IsNotNull |
属性が必須であるかどうかを指定します。 |
|
IsPersistent |
属性が永続的か一時的かを指定します。 |
|
IsQueriable |
属性をWHERE句に含めることができるかどうかを指定します。 |
|
IsUnique |
属性が一意であり、データベースで生成される一意制約を保持するかどうかを指定します。 |
|
IsUpdateable |
属性の更新可能性について、常に更新可能、新規の場合のみ更新可能、または更新不可能のいずれかを指定します。 |
|
IsVisible |
属性を表示するか非表示とするかを指定します。 |
|
名前 |
属性名。 |
|
PrecisionRule |
精度を適用するかどうかを指定します。trueの場合、精度ルールが適用されます。 |
|
PrimaryKey |
属性を主キーに含めるかどうかを指定します。 |
|
ArrayElementType |
配列型を定義するためにADF Business Componentsドメインでのみ使用されます。 |
|
BeanClass |
完全修飾パッケージ名。タイプの構造定義へのフルパスを識別します。 |
|
CollectionBeanClass |
完全修飾パッケージ名。メソッド・アクセッサの構造定義へのフルパスを識別します。コレクションのエンティティにアクセスするセッションBeanの場合、この値はReadOnlyCollectionまたはUpdateableCollectionのいずれかです。 |
|
id |
一意の識別子。Beanクラスに出現するメソッド名と同じです。 |
|
IsCollection |
メソッド・アクセッサがコレクションを戻すかどうかを指定します。アクセスされるエンティティがコレクションであり、CollectionBeanClass属性値を指定する場合、trueに設定します。 |
|
SourceName |
このBeanのソースのプロパティ名。 |
|
BeanClass |
完全修飾パッケージ名。タイプの構造定義へのフルパスを識別します。 |
|
CollectionBeanClass |
完全修飾パッケージ名。メソッド・アクセッサの構造定義へのフルパスを識別します。コレクションのエンティティにアクセスするセッションBeanの場合、この値はReadOnlyCollectionまたはUpdateableCollectionのいずれかです。 |
|
id |
一意の識別子。Beanクラスに出現するメソッド名と同じです。 |
|
IsCollection |
メソッド・アクセッサがコレクションを戻すかどうかを指定します。アクセスされるエンティティがコレクションであり、CollectionBeanClass属性値を指定する場合、trueに設定します。 |
|
ReturnNodeName |
一意の識別子。Returnノードを表示するためにデータ・コントロール・パレットで使用される名前です。 |
|
id |
一意の識別子。セッションBeanクラスのメソッド・シグネチャに出現するメソッド・パラメータ名と同じです。 |
|
Type |
パラメータのデータ型を指定します。 |
例A-3は、SRDemoアプリケーションのSRAdminFacade.xmlファイルの例を示しています。SRAdminFacade.xmlファイルには、属性、アクセッサおよび操作がリストされています。操作には、他の構造定義を参照するパラメータが含まれる場合があります(参照される構造定義も属性、アクセッサおよび操作で構成されます)。
例A-3 SRAdminFacade.xmlの構造定義
<?xml version="1.0" encoding="UTF-8" ?> <JavaBean xmlns="http://xmlns.oracle.com/adfm/beanmodel" version="10.1.3.35.83" id="SRAdminFacade" BeanClass="oracle.srdemo.model.SRAdminFacade" Package="oracle.srdemo.model" isJavaBased="true"> <MethodAccessor IsCollection="false" Type="oracle.srdemo.model.entities.ExpertiseArea" BeanClass="oracle.srdemo.model.entities.ExpertiseArea" id="createExpertiseArea" ReturnNodeName="oracle.srdemo.model.entities.ExpertiseArea"> <ParameterInfo id="product" Type="oracle.srdemo.model.entities.Product" isStructured="true"/> <ParameterInfo id="user" Type="oracle.srdemo.model.entities.User" isStructured="true"/> <ParameterInfo id="prodId" Type="java.lang.Integer" isStructured="false"/> <ParameterInfo id="userId" Type="java.lang.Integer" isStructured="false"/> <ParameterInfo id="expertiseLevel" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="notes" Type="java.lang.String" isStructured="false"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="oracle.srdemo.model.entities.Product" BeanClass="oracle.srdemo.model.entities.Product" id="createProduct" ReturnNodeName="oracle.srdemo.model.entities.Product"> <ParameterInfo id="prodId" Type="java.lang.Integer" isStructured="false"/> <ParameterInfo id="name" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="image" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="description" Type="java.lang.String" isStructured="false"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="oracle.srdemo.model.entities.User" BeanClass="oracle.srdemo.model.entities.User" id="createUser" ReturnNodeName="oracle.srdemo.model.entities.User"> <ParameterInfo id="userId" Type="java.lang.Integer" isStructured="false"/> <ParameterInfo id="userRole" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="email" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="firstName" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="lastName" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="streetAddress" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="city" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="stateProvince" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="postalCode" Type="java.lang.String" isStructured="false"/> <ParameterInfo id="countryId" Type="java.lang.String" isStructured="false"/> </MethodAccessor> <MethodAccessor IsCollection="true" Type="oracle.srdemo.model.entities.User" BeanClass="oracle.srdemo.model.entities.User" id="findAllStaffWithOpenAssignments" ReturnNodeName="oracle.srdemo.model.entities.User" CollectionBeanClass="UpdateableCollection"/> <MethodAccessor IsCollection="true" Type="oracle.srdemo.model.entities.ExpertiseArea" BeanClass="oracle.srdemo.model.entities.ExpertiseArea" id="findExpertiseByUserId" ReturnNodeName="oracle.srdemo.model.entities.ExpertiseArea" CollectionBeanClass="UpdateableCollection"> <ParameterInfo id="userIdParam" Type="java.lang.Integer" isStructured="false"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="java.lang.Object" id="mergeEntity" ReturnNodeName="Return"> <ParameterInfo id="entity" Type="java.lang.Object" isStructured="false"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="java.lang.Object" id="persistEntity" ReturnNodeName="Return"> <ParameterInfo id="entity" Type="java.lang.Object" isStructured="false"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="java.lang.Object" id="refreshEntity" ReturnNodeName="Return"> <ParameterInfo id="entity" Type="java.lang.Object" isStructured="false"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="void" id="removeEntity" ReturnNodeName="Return"> <ParameterInfo id="entity" Type="java.lang.Object" isStructured="false"/> </MethodAccessor> </JavaBean>
TopLink POJO、EJBエンティティまたはJava Beanに対して作成される各XMLファイルは、それぞれの場合にリストされる構成メンバーが汎用のADFメタデータであるため、よく似ています。次の構文は、TopLinkエンティティのXMLファイルを示しています。
例A-4は、SRDemoアプリケーションのProduct.xmlファイルの例を示しています。属性、アクセッサおよび操作(メソッド)に分けられたファイルの構造に注意してください。
例A-4 Product.xmlの構造定義
<?xml version="1.0" encoding="UTF-8" ?> <JavaBean xmlns="http://xmlns.oracle.com/adfm/beanmodel" version="10.1.3.35.65" id="Product" BeanClass="oracle.srdemo.model.entities.Product" Package="oracle.srdemo.model.entities" isJavaBased="true"> <Attribute Name="description" Type="java.lang.String"/> <Attribute Name="image" Type="java.lang.String"/> <Attribute Name="name" Type="java.lang.String"/> <Attribute Name="prodId" Type="java.lang.Integer"/> <AccessorAttribute id="expertiseAreaCollection" IsCollection="true" BeanClass="oracle.srdemo.model.entities.ExpertiseArea" CollectionBeanClass="UpdateableCollection"/> <AccessorAttribute id="serviceRequestCollection" IsCollection="true" BeanClass="oracle.srdemo.model.entities.ServiceRequest" CollectionBeanClass="UpdateableCollection"/> <MethodAccessor IsCollection="false" Type="void" id="addExpertiseArea" ReturnNodeName="Return"> <ParameterInfo id="anExpertiseArea" Type="oracle.srdemo.model.entities.ExpertiseArea" isStructured="true"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="void" id="addExpertiseArea" ReturnNodeName="Return"> <ParameterInfo id="index" Type="int" isStructured="false"/> <ParameterInfo id="anExpertiseArea" Type="oracle.srdemo.model.entities.ExpertiseArea" isStructured="true"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="void" id="addServiceRequest" ReturnNodeName="Return"> <ParameterInfo id="aServiceRequest" Type="oracle.srdemo.model.entities.ServiceRequest" isStructured="true"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="void" id="addServiceRequest" ReturnNodeName="Return"> <ParameterInfo id="index" Type="int" isStructured="false"/> <ParameterInfo id="aServiceRequest" Type="oracle.srdemo.model.entities.ServiceRequest" isStructured="true"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="void" id="removeExpertiseArea" ReturnNodeName="Return"> <ParameterInfo id="anExpertiseArea" Type="oracle.srdemo.model.entities.ExpertiseArea" isStructured="true"/> </MethodAccessor> <MethodAccessor IsCollection="false" Type="void" id="removeServiceRequest" ReturnNodeName="Return"> <ParameterInfo id="aServiceRequest" Type="oracle.srdemo.model.entities.ServiceRequest" isStructured="true"/> </MethodAccessor> <ConstructorMethod IsCollection="false" Type="void" id="Product"/> </JavaBean>
次の4つの追加ファイルも生成されます。
JDeveloperのデータ・コントロール・パレットは、これらのファイルによってサポートされます。設計時にのみ使用されるこれらのファイルにより、特定のアクセッサ用としてデータ・コントロール・パレットに表示する操作のリストを指定します。これらのファイルは、アクセッサのCollectionBeanClass属性により参照されます。通常、これらのファイルを編集することはありませんが、パレットから操作を削除する場合は、このリストの項目を削除します。
例A-5は、読取り専用コレクションを示しています。4つの設計時XMLファイルの構文は、すべて同様です。
例A-5 読取り専用コレクションの構文
<?xml version="1.0" encoding="UTF-8" ?> <JavaBean xmlns="http://xmlns.oracle.com/adfm/beanmodel" version="10.1.3.35.65" id="ReadOnlyCollection" BeanClass="ReadOnlyCollection" isJavaBased="false"> <BuiltinOperation id="IteratorExecute"/> <BuiltinOperation id="Find"/> <BuiltinOperation id="First"/> <BuiltinOperation id="Last"/> <BuiltinOperation id="Next"/> <BuiltinOperation id="Previous"/> <BuiltinOperation id="NextSet"/> <BuiltinOperation id="PreviousSet"/> <BuiltinOperation id="setCurrentRowWithKey"/> <BuiltinOperation id="setCurrentRowWithKeyValue"/> </JavaBean>
DataBindings.cpx
ファイルは、使用可能なデータ・コントロールをHTMLビジュアル・エディタのWebページ上に最初にドロップしたときに、ユーザー・インタフェース・プロジェクトに作成されます。.cpx
ファイルにより、アプリケーション全体のOracle ADFバインディング・コンテキストが定義され、Oracle ADFバインディング・オブジェクトを実行時に作成するためのメタデータが提供されます。データ・バインドされたUIコンポーネントを文書に挿入すると、バインディング式がページに追加され、それによって実行時にOracle ADFバインディング・オブジェクトにアクセスします。
旧リリースのJDeveloperでADFアプリケーションを作成したことのあるユーザーは、以前のように.cpx
ファイルにDataControls.dcx
ファイルからコピーされた情報がすべて含まれておらず、その参照のみが含まれていることに気付くはずです。このため、.cpx
ファイルに変更を加える場合は、DataControls.dcx
ファイルを編集する必要があります。
DataBindings.cpxファイルは、ユーザー・インタフェース・プロジェクト・フォルダの/src
ディレクトリにあります。ファイル・ノードをダブルクリックすると、XMLソース・エディタにバインディング・コンテキスト記述が表示されます。(バインディング・コンテキスト・パラメータを編集するには、プロパティ・インスペクタを使用して、構造ウィンドウで適切なパラメータを選択します。)
DataBindings.cpxファイルのトップレベル要素は、<DataControlConfigs>です。
<DataControlConfigs xmlns="http://xmlns.oracle.com/adfm/configuration" version="10.1.3.35.65" Package="oracle.srdemo.model" id="DataControls">
ここでのXMLネームスペース属性(xmlns)により、データ・コントロールの実行時のバインド先となるURIを指定します。パッケージ名のみ編集可能であり、他のすべての属性はここに示したとおりの値に設定する必要があります。
図A-9は、<DataControlConfigs>要素の子要素の階層を示しています。データ・コントロールを作成したビジネス・サービスごとに、独自の<dataControlUsages>定義が割り当てられます。
子要素の使用方法は、次のとおりです。
<pageMap>要素: すべてのユーザー・インタフェースURLと、対応するpageDefinitionUsage名をマップします。このマップは、実行時にURLをそのpageDefinitionにマップするために使用されます。
<pageDefinitionUsages>要素: PageDefinitionUsage(BindingContainerインスタンス)名を対応するpageDefinition定義にマップします。id属性は、使用IDを示します。path属性は、ページ定義へのフルパスを示します。
<dataControlUsages>要素: データ・コントロール(短縮名)のリストと、それらに対応するdcxまたはxcfgファイル内のデータ・コントロール定義エントリへのパスを宣言します。
表A-3に、DataBindings.cpxの各要素の属性を示します。
表A-3 DataBindings.cpxファイルの各要素の属性
例A-6は、SRDemoアプリケーションのDataBindings.cpxファイルの構文を示しています。この例では、2つのセッション・ファサード・データ・コントロールと1つのURLデータ・コントロールを使用しています。次のコードでは、DCX内のデータ・コントロールに対する参照に注意してください。たとえば、<dc id="SRDemoFAQ" path="oracle.srdemo.faq.SRDemoFAQ"/>により、DataControls.dcx内のデータ・コントロールIDを通じてSRDemoFAQが検出されます。
例A-6 DataBindings.cpxの例
<?xml version="1.0" encoding="UTF-8" ?> <Application xmlns="http://xmlns.oracle.com/adfm/application" version="10.1.3.35.65" id="DataBindings" SeparateXMLFiles="false" Package="oracle.srdemo.view" ClientType="Generic"> <pageMap> <page path="/app/SRList.jspx" usageId="SRListPageDef"/> <page path="/app/SRCreate.jspx" usageId="SRCreatePageDef"/> <page path="/app/SRCreateConfirm.jspx" usageId="SRCreateConfirmPageDef"/> <page path="/app/staff/SREdit.jspx" usageId="SREditPageDef"/> <page path="/app/staff/SRStaffSearch.jspx" usageId="SRStaffSearchPageDef"/> <page path="/app/staff/SRSearch.jspx" usageId="SRSearchPageDef"/> <page path="/app/SRMain.jspx" usageId="SRMainPageDef"/> <page path="/app/management/SRManage.jspx" usageId="SRManagePageDef"/> <page path="/app/SRFaq.jspx" usageId="SRFaqPageDef"/> </pageMap> <pageDefinitionUsages> <page id="SRListPageDef" path="oracle.srdemo.view.pageDefs.app_SRListPageDef"/> <page id="UserInfoPageDef" path="oracle.srdemo.view.pageDefs.headless_UserInfoPageDef"/> <page id="SRCreatePageDef" path="oracle.srdemo.view.pageDefs.app_SRCreatePageDef"/> <page id="SRCreateConfirmPageDef" path="oracle.srdemo.view.pageDefs.app_SRCreateConfirmPageDef"/> <page id="SREditPageDef" path="oracle.srdemo.view.pageDefs.app_staff_SREditPageDef"/> <page id="SRStaffSearchPageDef" path="oracle.srdemo.view.pageDefs.app_staff_SRStaffSearchPageDef"/> <page id="SRSearchPageDef" path="oracle.srdemo.view.pageDefs.app_staff_SRSearchPageDef"/> <page id="SRMainPageDef" path="oracle.srdemo.view.pageDefs.app_SRMainPageDef"/> <page id="SRManagePageDef" path="oracle.srdemo.view.pageDefs.app_management_SRManagePageDef"/> <page id="SRFaqPageDef" path="oracle.srdemo.view.pageDefs.app_SRFaqPageDef"/> </pageDefinitionUsages> <dataControlUsages> <dc id="SRDemoFAQ" path="oracle.srdemo.faq.SRDemoFAQ"/> <dc id="SRAdminFacade" path="oracle.srdemo.model.SRAdminFacade"/> <dc id="SRPublicFacade" path="oracle.srdemo.model.SRPublicFacade"/> </dataControlUsages> </Application>
<pageName>PageDef.xmlファイルは、データ・コントロール・パレットまたは構造ウィンドウを使用して、データ・バインドされたコンポーネントをWebページに挿入するたびに作成されます。これらのXMLファイルにより、アプリケーションの各WebページのOracle ADFバインディング・コンテナが定義されます。バインディング・コンテナは、ページ内のバインディングへのアクセスを提供します。そのため、データ・バインドされたWebページごとに1つのXMLファイルが割り当てられます。
PageDef.xmlファイルは、ViewControllerプロジェクト・フォルダの/src/viewディレクトリにあります。アプリケーション・ナビゲータでは、「アプリケーション・ソース」フォルダのビュー・パッケージ内にこのファイルが表示されます。ファイル・ノードをダブルクリックすると、XMLソース・エディタにページ記述が表示されます。ページ記述パラメータを編集するには、プロパティ・インスペクタを使用して、構造ウィンドウで適切なパラメータを選択します。
PageDefsの生成方法は、単一値を戻すメソッドとコレクションを戻すメソッドでは大きな違いがあるため、後述の説明ではこれらを別々にリストします。
PageDef.xmlファイルのトップレベル要素は、<pageDefinition>です。
<pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel" version="10.1.3.35.83" id="<pagename>PageDef" Package="oracle.srdemo.view.pageDefs">
ここでのXMLネームスペース属性(xmlns)により、ADFバインディング・コンテナの実行時のバインド先となるURIを指定します。パッケージ名のみ編集可能であり、他のすべての属性はここに示したとおりの値に設定する必要があります。
例A-7は、<pageDefinition>要素の子要素の階層を示しています。データ・コントロールを作成したビジネス・サービスごとに、独自の<AdapterDataControl>定義が割り当てられます。
例A-7 PageDef.xml要素の階層
<?xml version="1.0" encoding="UTF-8" ?> <pageDefinition> <parameters> ... </parameters> <executables> ... </executables> <bindings> ... </bindings> </pageDefinition>
子要素の使用方法は、次のとおりです。
<parameters>: ELでアクセス可能なページ・レベルのパラメータを定義します。これらのパラメータは、Webページ・リクエストに固有の情報を格納しており、バインディング式を通じてアクセスできます。
<executables>: ADFページ・ライフサイクルのprepareModelフェーズ中に実行される項目(メソッドおよびアクセッサ)のリストを定義します。実行されるメソッドは、<methodIterator>により定義されます。ライフサイクルでは、<executables>セクションにリストされた順序で実行処理が行われます。メソッドまたは操作が実行されるかどうかは、そのrefreshまたはrefreshCondition属性の値に依存します。データ・コントロールの組込み操作は、次の要素で定義されます。
<page>: ネストされたページの定義(バインディング・コンテナ)
<iterator>: DataControlsの名前付きコレクションの定義
<accessorIterator>: データ・コントロール階層のアクセッサを取得するための定義
<methodIterator>: 同じファイルのmethodActionにより定義された起動メソッドから戻されるイテレータを取得するための定義
<variableIterator>: バインディング・コンテナに対して宣言された変数を格納する内部イテレータ
<invokeAction>: 実行可能項目として起動されるメソッドの定義
<bindings>: <executables>内のエントリを参照して、バインディングが属性レベルのデータを抽出または送信するコレクションを取得します。
表A-4に、<pageDefinition>トップレベル要素の属性を示します。
表A-4 PageDef.xmlファイルの<pageDefinition>要素の属性
表A-5に、<parameters>の子要素の属性を示します。
表A-5 PageDef.xmlファイルの<parameters>要素の属性
要素の構文 | 属性 | 属性の説明 |
---|---|---|
id |
一意の識別子。ADFバインディングにより参照できます。 |
|
option |
バインディング・コンテナ内での変数の使用方法を次のように示します。
|
|
readonly |
パラメータ値が変更可能であるかどうかを示します。パラメータ値の変更をアプリケーションに許可しない場合は、trueに設定します。 |
|
value |
デフォルト値。EL式を使用できます。 |
表A-6に、PageDef.xmlの<executables>要素の属性を示します。
表A-6 PageDef.xmlファイルの<executables>要素の属性
要素の構文 | 属性 | 属性の説明 |
---|---|---|
BeanClass |
関連付けられたイテレータ(コレクション)のBeanのJava型を識別します。 |
|
CacheResults |
trueの場合、リクエスト間でデータ・コレクションが管理されます。 |
|
DataControl |
このイテレータ・バインディングにより参照されるコレクションを解析するか、または戻すデータ・コントロール。 |
|
id |
一意の識別子。任意のADF値バインディングにより参照できます。 |
|
MasterBinding |
マスターとして機能するデータ・コレクションをアクセッサ・イテレータのディテール・コレクションにバインドするmethodIterator(イテレータ)への参照。 |
|
ObjectType |
ADF Business Componentsでのみ使用します。ブール値により、コレクションがオブジェクト型であるかどうかを指定します。 |
|
RangeSize |
バインドされたコレクションからフェッチするデータ・オブジェクト数のレンジを指定します。レンジは、コレクション内のデータ・オブジェクトのサブセットへのアクセスに使用するウィンドウを定義します。デフォルトのレンジ・サイズは、10個のデータ・オブジェクトをフェッチするレンジです。セット全体を操作する場合や、ページに表示するデータ・オブジェクト数を制限する場合、RangeSizeを使用します。値-1および0には特別な意味があります。値-1では、コレクションから使用可能なすべてのオブジェクトが戻されますが、値0では、コレクションがデータソースから取得する場合と同じ数のオブジェクトが戻されます。 |
|
Refresh |
どのようなときに実行可能項目を起動するかを指定します。必要に応じて次のいずれかのプロパティを設定します。
|
|
RefreshCondition |
解決されたときに実行可能項目の起動条件を決定するEL式。たとえば、${!bindings.findAllServiceRequestIter.findMode}は、ADFバインディング・コンテキストのAllServiceRequestのイテレータに関するfindModeの値を解決します。ヒント: プロパティ・インスペクタを使用して、バインディング・コンテキスト(バインディング・ネームスペースまたはデータ・ネームスペース)、JSFマネージドBeanおよびJSPオブジェクトの使用可能オブジェクトから式を作成できます。 |
|
Binds |
起動するアクションを指定します。任意のactionBindingで使用できます。また、EJBセッション・ファサード・データ・コントロールの場合、データ・コントロールにより公開されるfinderメソッドにバインドできます。EJBセッション・ファサード・データ・コントロールでサポートされる組込みのアクションは、次のとおりです。
|
|
id |
一意の識別子。任意のADFアクション・バインディングにより参照できます。 |
|
Refresh |
前述のRefresh属性を参照してください。 |
|
RefreshCondition |
前述のRefreshCondition属性を参照してください。 |
|
BeanClass |
関連付けられたイテレータ(コレクション)のBeanのJava型を識別します。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
Binds |
前述のBinds属性を参照してください。 |
|
CacheResults |
前述のCacheResults属性を参照してください。 |
|
DataControl |
このイテレータが関連付けられているbindingContext(.cpx)のDataControl使用の名前。 |
|
DefClass |
テスト用の内部使用属性。 |
|
id |
一意の識別子。任意のADF値バインディングにより参照できます。 |
|
ObjectType |
EJBセッション・ファサード・データ・コントロールでは使用されません(ADF Business Componentsでのみ使用されます)。 |
|
RangeSize |
前述のRangeSize属性を参照してください。 |
|
Refresh |
前述のRefresh属性を参照してください。 |
|
RefreshCondition |
前述のRefreshCondition属性を参照してください。 |
|
id |
一意の識別子。<page>の場合、このページに含まれるネストされたページ(リージョン)を示します。<variableIterator>実行可能項目の場合、任意のADF値バインディングによりこの識別子を参照できます。 |
|
path |
<page>実行可能項目にのみ使用されます。高度な使用例として、別のページのバインディング・コンテナを参照する完全修飾パスを指定できます。 |
|
Refresh |
前述のRefresh属性を参照してください。 |
|
RefreshCondition |
前述のRefreshCondition属性を参照してください。 |
表A-7に、PageDef.xmlの<bindings>要素の属性を示します。
表A-7 PageDef.xmlファイルの<bindings>要素の属性
要素の構文 | 属性 | 属性の説明 |
---|---|---|
アクション |
完全修飾パッケージ名。データ・コントロールの作成されるクラスを識別します。EJBセッション・ファサードの場合は、セッションBeanです。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
DataControl |
このiteratorBindingまたはactionBindingが関連付けられているbindingContext(.cpx)のDataControl使用の名前。 |
|
ApplyValidation |
デフォルトでtrueに設定されます。trueの場合、controlBindingにより、バインディングに定義されたバリデータが実行されます。ADF Business Componentsにおいて、ローカル・モードが使用され、対応する属性に同じバリデータがすでに定義されている場合は、falseに設定できます。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
ControlClass |
テスト用の内部使用属性。 |
|
CustomInputHandler |
特定の値バインディングのinputValueを処理する際に使用されるoracle.jbo.uicli.binding.JUCtrlValueHandler実装のクラス名です。 |
|
DefClass |
テスト用の内部使用属性。 |
|
id |
一意の識別子。任意のADFアクション・バインディングにより参照できます。 |
|
IterBinding |
このバインディングが関連付けられているbindingContainerのiteratorBindingインスタンスを参照します。 |
|
NullValueId |
リスト表示にNULL値を示すためのStringを含むbindingContainerのメッセージ・バンドルのエントリを参照します。 |
|
ApplyValidation |
デフォルトでtrueに設定されます。trueの場合、controlBindingにより、バインディングに定義されたバリデータが実行されます。ADF Business Componentsにおいて、ローカル・モードが使用され、対応する属性に同じバリデータがすでに定義されている場合は、falseに設定できます。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
BoolVal |
このブール・リスト・バインディングの静的値のリストにおいて、0(ゼロ)索引の値がtrueとfalseのいずれを示すかを指定します。 |
|
ControlClass |
テスト用の内部使用属性。 |
|
CustomInputHandler |
特定の値バインディングのinputValueを処理する際に使用されるoracle.jbo.uicli.binding.JUCtrlValueHandler実装のクラス名です。 |
|
DefClass |
テスト用の内部使用属性。 |
|
id |
一意の識別子。任意のADFアクション・バインディングにより参照できます。 |
|
IterBinding |
このバインディングが関連付けられているbindingContainerのiteratorBindingインスタンスを参照します。 |
|
ListIter |
このlistBindingのソース・リストに関連付けられているiteratorBindingを参照します。 |
|
ListOperMode |
このリスト・バインディングをナビゲーション用とするか、値の静的リストとするか、またはLOV型のリストとするかを指定します。 |
|
NullValueFlag |
このリスト・バインディングにNULL値を含めるかどうかを指定します。含める場合は、リストの最初または最後のどちらに表示するかを指定します。 |
|
NullValueId |
リスト表示にNULL値を示すためのStringを含むbindingContainerのメッセージ・バンドルのエントリを参照します。 |
|
ApplyValidation |
デフォルトでtrueに設定されます。trueの場合、controlBindingにより、バインディングに定義されたバリデータが実行されます。ADF Business Componentsにおいて、ローカル・モードが使用され、対応する属性に同じバリデータがすでに定義されている場合は、falseに設定できます。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
BoolVal |
このブール・リスト・バインディングの静的値のリストにおいて、0(ゼロ)索引の値がtrueとfalseのいずれを示すかを指定します。 |
|
ChildAccessorName |
ツリーの特定の階層ノード・タイプに関して、ノードの次のレベルを取得するために起動されるアクセッサの名前。 |
|
ControlClass |
テスト用の内部使用属性。 |
|
CustomInputHandler |
特定の値バインディングのinputValueを処理する際に使用されるoracle.jbo.uicli.binding.JUCtrlValueHandler実装のクラス名です。 |
|
DefClass |
テスト用の内部使用属性。 |
|
id |
一意の識別子。任意のADFアクション・バインディングにより参照できます。 |
|
IterBinding |
このバインディングが関連付けられているbindingContainerのiteratorBindingインスタンスを参照します。 |
|
NullValueId |
リスト表示にNULL値を示すためのStringを含むbindingContainerのメッセージ・バンドルのエントリを参照します。 |
|
ApplyValidation |
デフォルトでtrueに設定されます。trueの場合、controlBindingにより、バインディングに定義されたバリデータが実行されます。ADF Business Componentsにおいて、ローカル・モードが使用され、対応する属性に同じバリデータがすでに定義されている場合は、falseに設定できます。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
ControlClass |
テスト用の内部使用属性。 |
|
CustomInputHandler |
特定の値バインディングのinputValueを処理する際に使用されるoracle.jbo.uicli.binding.JUCtrlValueHandler実装のクラス名です。 |
|
DefClass |
テスト用の内部使用属性。 |
|
id |
一意の識別子。任意のADFアクション・バインディングにより参照できます。 |
|
IterBinding |
このバインディングが関連付けられているbindingContainerのiteratorBindingインスタンスを参照します。 |
|
ListIter |
このlistBindingのソース・リストに関連付けられているiteratorBindingを参照します。 |
|
ListOperMode |
このリスト・バインディングをナビゲーション用とするか、値の静的リストとするか、またはLOV型のリストとするかを指定します。 |
|
NullValueFlag |
このリスト・バインディングにNULL値を含めるかどうかを指定します。含める場合は、リストの最初または最後のどちらに表示するかを指定します。 |
|
NullValueId |
リスト表示にNULL値を示すためのStringを含むbindingContainerのメッセージ・バンドルのエントリを参照します。 |
|
StaticList |
バインドされたリスト・コンポーネントにレンダリングされる値の静的リストを定義します。 |
|
アクション |
完全修飾パッケージ名。データ・コントロールの作成されるクラスを識別します。EJBセッション・ファサードの場合は、セッションBeanです。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
ClassName |
起動されるメソッドが属しているクラスです。 |
|
CustomInputHandler |
特定の値バインディングのinputValueを処理する際に使用されるoracle.jbo.uicli.binding.JUCtrlValueHandler実装のクラス名です。 |
|
DataControl |
このiteratorBindingまたはactionBindingが関連付けられているbindingContext(.cpx)のDataControl使用の名前。 |
|
DefClass |
テスト用の内部使用属性。 |
|
id |
一意の識別子。任意のADFアクション・バインディングにより参照できます。 |
|
InstanceName |
関連付けられたメソッドが起動されるJavaオブジェクト・インスタンスへのドット区切りのELパス。 |
|
IsLocalObjectReference |
instanceNameにこのbindingContainerを相対位置とするELパスが含まれる場合は、trueに設定します。 |
|
IterBinding |
このバインディングが関連付けられているbindingContainerのiteratorBindingインスタンスを参照します。 |
|
MethodName |
このmethodActionBindingで起動する必要のある特定のインスタンスまたはクラスの操作の名前を示します。 |
|
RequiresUpdateModel |
このアクションの起動前に、アクションでモデルの更新を必要とするかどうかを指定します。 |
|
ReturnName |
関連付けられたメソッドにより戻される結果のELパス。 |
|
ApplyValidation |
デフォルトでtrueに設定されます。trueの場合、controlBindingにより、バインディングに定義されたバリデータが実行されます。ADF Business Componentsにおいて、ローカル・モードが使用され、対応する属性に同じバリデータがすでに定義されている場合は、falseに設定できます。 |
|
BindingClass |
この属性は、下位互換性を目的としており、このバインディング定義のランタイムを実装するクラスを示します。JDeveloperリリース10.1.3では無視されます。 |
|
ControlClass |
テスト用の内部使用属性。 |
|
CustomInputHandler |
特定の値バインディングのinputValueを処理する際に使用されるoracle.jbo.uicli.binding.JUCtrlValueHandler実装のクラス名です。 |
|
DefClass |
テスト用の内部使用属性。 |
|
DiscrValue |
階層タイプのバインディング(ツリー・ノードのタイプ定義)における多相化識別子の値を示します。この値により、多相ツリー・バインディングにレンダリングされるコレクションの特定行を、包含階層タイプのバインディングを使用してレンダリングするかどうかを指定します。 |
|
id |
一意の識別子。任意のADFアクション・バインディングにより参照できます。 |
|
IterBinding |
このバインディングが関連付けられているbindingContainerのiteratorBindingインスタンスを参照します。 |
|
NullValueId |
リスト表示にNULL値を示すためのStringを含むbindingContainerのメッセージ・バンドルのエントリを参照します。 |
これは、開いているJSPページにデータ・コントロール・パレットのSRPublicFacadeノードに含まれるfindUserByEmail()メソッドからメソッド戻り値Userをドロップすると作成されるページ定義ファイルです。
例A-8 findUserByEmail()のPageDef
<?xml version="1.0" encoding="UTF-8" ?> <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel" version="10.1.3.36.7" id="untitled1PageDef" Package="project1.pageDefs"> <parameters/> <executables> <variableIterator id="variables"/> <methodIterator id="findUserByEmailIter" Binds="findUserByEmail.result" DataControl="SRPublicFacade" RangeSize="10" BeanClass="oracle.srdemo.model.entities.User"/> </executables> <bindings> <methodAction id="findUserByEmail" InstanceName="SRPublicFacade.dataProvider" DataControl="SRPublicFacade" MethodName="findUserByEmail" RequiresUpdateModel="true" Action="999" ReturnName="SRPublicFacade.methodResults.SRPublicFacade_dataProvider_findUserByEmail_result"> <NamedData NDName="emailParam" NDValue="mkorf@oracle.com" NDType="java.lang.String"/> </methodAction> <table id="findUserByEmail1" IterBinding="findUserByEmailIter"> <AttrNames> <Item Value="city"/> <Item Value="countryId"/> <Item Value="email"/> <Item Value="firstName"/> <Item Value="lastName"/> <Item Value="postalCode"/> <Item Value="stateProvince"/> <Item Value="streetAddress"/> <Item Value="userId"/> <Item Value="userRole"/> </AttrNames> </table> </bindings> </pageDefinition>
これは、開いているJSPページにデータ・コントロール・パレットのSRPublicFacadeノードに含まれるfindAllStaff()メソッドからUserノードをドロップすると作成されるページ定義ファイルです。このファイルはコレクション用です。
例A-9 コレクションを戻すメソッドのPageDef
<?xml version="1.0" encoding="UTF-8" ?> <pageDefinition xmlns="http://xmlns.oracle.com/adfm/uimodel" version="10.1.3.36.7" id="untitled2PageDef" Package="project1.pageDefs"> <parameters/> <executables> <methodIterator id="findAllStaffIter" Binds="findAllStaff.result" DataControl="SRPublicFacade" RangeSize="10" BeanClass="oracle.srdemo.model.entities.User"/> </executables> <bindings> <methodAction id="findAllStaff" InstanceName="SRPublicFacade.dataProvider" DataControl="SRPublicFacade" MethodName="findAllStaff" RequiresUpdateModel="true" Action="999" ReturnName="SRPublicFacade.methodResults.SRPublicFacade_dataProvider_findAllStaff_result"/> <table id="findAllStaff1" IterBinding="findAllStaffIter"> <AttrNames> <Item Value="city"/> <Item Value="countryId"/> <Item Value="email"/> <Item Value="firstName"/> <Item Value="lastName"/> <Item Value="postalCode"/> <Item Value="stateProvince"/> <Item Value="streetAddress"/> <Item Value="userId"/> <Item Value="userRole"/> </AttrNames> </table> </bindings> </pageDefinition>
この項では、標準のweb.xml
デプロイメント・ディスクリプタ・ファイルに固有のOracle ADF構成設定について説明します。
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、デフォルト設定を含む初期のweb.xml
ファイルが/WEB-INF
に自動的に作成されます。ファイルを編集するには、アプリケーション・ナビゲータでweb.xmlをダブルクリックし、XMLエディタに表示します。
次の設定は、JSFおよびADF Facesを使用するすべてのアプリケーションのweb.xml
で構成する必要があります。
JSFのサーブレットとマッピング: JSFを使用してユーザー・インタフェースを構築するWebアプリケーションのリクエスト処理ライフサイクルを管理するサーブレットjavax.faces.webapp.FacesServlet
。
ADF Facesのフィルタとマッピング: AdfFacesContext
オブジェクトを構成してADF Facesを適切に初期化するためのサーブレット・フィルタ。このフィルタでは、ファイル・アップロードも処理されます。
ADFのリソース・サーブレットとマッピング: ResourceLoader
に委譲することでWebアプリケーション・リソース(イメージ、スタイルシート、JavaScriptライブラリなど)を準備するサーブレット。
JSFのサーブレットとマッピングの構成設定は、JSFプロジェクトを最初に作成したときに、自動的に初期のweb.xml
ファイルに追加されます。ADF Facesのフィルタとマッピング、およびリソース・サーブレットとマッピングの構成設定は、JSFページに最初にADF Facesコンポーネントを挿入したときに自動的に挿入されます。
例A-10 ADF FacesおよびJSF用のweb.xmlの構成
<?xml version = '1.0' encoding = 'windows-1252'?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"> <description>Empty web.xml file for Web Application</description> <!-- Installs the ADF Faces Filter -- > <filter> <filter-name>adfFaces</filter-name> <filter-class>oracle.adf.view.faces.webapp.AdfFacesFilter</filter-class> </filter> <!-- Adds the mapping to ADF Faces Filter -- > <filter-mapping> <filter-name>adfFaces</filter-name> <servlet-name>Faces Servlet</servlet-name> </filter-mapping> <!-- Maps the JSF servlet to a symbolic name --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Maps ADF Faces ResourceServlet to a symbolic name -- > <servlet> <servlet-name>resources</servlet-name> <servlet-class>oracle.adf.view.faces.webapp.ResourceServlet</servlet-class> </servlet> <!-- Maps URL pattern to the JSF servlet's symbolic name --> <!-- You can use either a path prefix or extension suffix pattern --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <!-- Maps URL pattern to the ResourceServlet's symbolic name --> <servlet-mapping> <servlet-name>resources</servlet-name> <url-pattern>/adf/*</url-pattern> </servlet-mapping> ... </web-app>
JSFおよびADF Facesの使用時にweb.xml
内で使用できるコンテキスト・パラメータの詳細は、A.8.1.1項「状態保存の構成」からA.8.1.7項「留意事項」を参照してください。
web.xml
ファイルでは、次のJSFおよびADF Facesタスクがサポートされます。
次の状態保存コンテキスト・パラメータを指定できます。
javax.faces.STATE_SAVING_METHOD
: アプリケーションの表示状態を格納する場所を指定します。デフォルト値はserver
です(アプリケーションの表示状態はサーバーに格納されます)。表示状態をブラウザ・クライアントに格納する場合、この値をclient
に設定します。この場合、JDeveloperでは、トークン・ベースのクライアント側の状態保存が自動的に使用されます(次のoracle.adf.view.faces.CLIENT_STATE_METHOD
を参照)。デフォルト数の15のかわりに、使用するトークンの数を指定できます(後続のoracle.adf.view.faces.CLIENT_STATE_MAX_TOKENS
を参照)。
oracle.adf.view.faces.CLIENT_STATE_METHOD
: クライアント側の状態保存が有効である場合に、使用するクライアント側の状態保存のタイプを指定します。値は次のとおりです。
token
: (デフォルト)ページ状態はセッションに格納されますが、クライアントにトークンが維持されます。HttpSession
に戻されて格納される状態のブロックを識別する単純なトークンが、クライアントに格納されます。これにより、ADF Facesでは、同じページの複数回にわたる表示を正確に処理できます。この場合、フェイルオーバーHttpSession
がサポートされます。これは、JSF 1.2で規定されているデフォルトのサーバー側の動作と一致します。
all
: 一般的にサイズの大きい非表示のフォーム・フィールドにクライアントのすべての状態を格納します。これは、JSF 1.1のクライアント側の状態保存動作と一致しますが、HttpSession
を使用しない開発者にとっては有益です。
oracle.adf.view.faces.CLIENT_STATE_MAX_TOKENS
: ユーザーごとに常時格納するトークンの数を指定します。デフォルトは15です。この値を超えると、表示頻度の最も低いページの状態が失われるため、「戻る」ボタンを頻繁に使用するユーザーや、同時に複数のウィンドウを開いているユーザーが影響を受けます。フレームへの依存度が高いHTMLアプリケーションを作成する場合は、この値を増やすことができます。
例A-11は、状態保存パラメータを含むweb.xml
ファイルの一部を示しています。
次のアプリケーション・ビュー・キャッシュ・コンテキスト・パラメータを指定できます。
oracle.adf.view.faces.USE_APPLICATION_VIEW_CACHE
: アプリケーション・ビュー・キャッシュ機能を有効化するかどうかを指定します。アプリケーション・ビュー・キャッシュが有効化されると、ユーザーによって最初にページが表示されたときに、ADF Facesにより初期のページ状態がアプリケーション・レベルでキャッシュされます。その後、すべてのユーザーがページのキャッシュされた状態を入れ替わり再利用できるため、アプリケーションのパフォーマンスは著しく向上します。デフォルトはfalse
です。
例A-12は、アプリケーション・ビュー・キャッシュ・パラメータを含むweb.xml
ファイルの一部を示しています。
次のデバッグ・コンテキスト・パラメータを指定できます。
oracle.adf.view.faces.DEBUG_JAVASCRIPT
: ADF Facesのデフォルトでは、クライアントに提供されるJavaScriptは、一連のコメントや空白と同様に曖昧化されます。これにより、ADF FacesのJavaScriptダウンロードのサイズは大幅に削減されますが、JavaScriptのデバッグは難しくなります。アプリケーションの開発時に曖昧化を無効にするには、true
に設定します。アプリケーションのデプロイ時には、false
に設定します。
oracle.adf.view.faces.CHECK_FILE_MODIFICATION
: このパラメータのデフォルトは、false
です。true
に設定すると、JSPの変更日付が自動的にチェックされ、JSPの変更時に保存済の状態が破棄されます。true
の場合、開発が簡単になりますが、アプリケーションのデプロイ時には不要となるオーバーヘッドが追加されます。アプリケーションのデプロイ時には、false
に設定します。
JDeveloperの埋込みOC4Jにおけるテストおよびデバッグの場合、ADF Facesは埋込みOC4Jを自動的に検出し、ファイル変更チェックが有効に設定された状態で稼働するため、このパラメータをtrue
に明示的に設定する必要はありません。
例A-13は、デバッグ・パラメータを含むweb.xml
ファイルの一部を示しています。
次のファイル・アップロード・コンテキスト・パラメータを指定できます。
oracle.adf.view.faces.UPLOAD_TEMP_DIR
: ファイル・アップロード中に一時ファイルを格納するディレクトリを指定します。デフォルトは、ユーザーの一時ディレクトリです。
oracle.adf.view.faces.UPLOAD_MAX_DISK_SPACE
: 1回のリクエストでアップロード・ファイルを格納するために使用できる最大ディスク領域を指定します。デフォルトは2000KBです。
oracle.adf.view.faces.UPLOAD_MAX_MEMORY
: 1回のリクエストでアップロード・ファイルを格納するために使用できる最大メモリー容量を指定します。デフォルトは100KBです。
例A-14は、ファイル・アップロード・パラメータを含むweb.xml
ファイルの一部を示しています。
例A-14 web.xmlのファイル・アップロードのコンテキスト・パラメータ
<context-param> <param-name>oracle.adf.view.faces.UPLOAD_TEMP_DIR</param-name> <param-value>/tmp/Adfuploads</param-value> </context-param> <context-param> <param-name>oracle.adf.view.faces.UPLOAD_MAX_DISK_SPACE</param-name> <param-value>5120000</param-value> </context-param> <context-param> <param-name>oracle.adf.view.faces.UPLOAD_MAX_MEMORY</param-name> <param-value>512000</param-value> </context-param>
注意: ファイル・アップロードの初期化パラメータは、デフォルトのUploadedFileProcessor によってのみ処理されます。デフォルトのプロセッサをカスタムのUploadedFileProcessor 実装で置き換えた場合、これらのパラメータは処理されません。 |
ファイル・アップロードの詳細は、11.6項「ファイル・アップロード機能の提供」を参照してください。
ADFデータ・コントロールを使用してWebページを作成する場合、web.xml
で次の設定を構成する必要があります。
ADFバインディング・フィルタ: ADFContext
を作成するためのサーブレット・フィルタ。このフィルタには、セキュリティ・コンテキストや、リクエストおよびレスポンス・オブジェクトを格納する環境クラスなど、ADFに関するコンテキスト情報が含まれます。ADFアプリケーションでは、このフィルタを使用して、状況によりバインディング・コンテキストへのアクセスが必要となるHTTPリクエストを事前に処理します。
アプリケーション・バインディング・コンテナ用のサーブレット・コンテキスト・パラメータ: アプリケーション・バインディング・コンテキストを定義するために実行時にフィルタで読み取るCPXファイルを指定します。CPXファイルの詳細は、5.3項「DataBindings.cpxファイルでの作業」を参照してください。
JDeveloperのデータ・コントロール・パレットを使用してデータ・バインドされたJSFページを最初に作成したときに、ADFデータ・バインディング構成設定が自動的にweb.xml
ファイルに追加されます。
例A-15は、ADF Modelのバインディング設定を含むweb.xml
ファイルの一部を示しています。データ・コントロール・パレットとバインディング・オブジェクトの詳細は、第5章「ページでのデータの表示」を参照してください。
例A-15 web.xmlのADF Modelのバインディング構成設定
<context-param> <param-name>CpxFileName</param-name> <param-value>view.DataBindings</param-value> </context-param> <filter> <filter-name>adfBindings</filter-name> <filter-class>oracle.adf.model.servlet.ADFBindingFilter</filter-class> </filter> <filter-mapping> <filter-name>adfBindings</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>adfBindings</filter-name> <url-pattern>*.jspx</url-pattern> </filter-mapping>
アプリケーション全体に適用されるJSF用のその他のオプション・パラメータは、次のとおりです。
javax.faces.CONFIG_FILES
: JSFアプリケーション構成リソース・ファイルへのパスを指定します。値には、アプリケーション・コンテキスト相対パスのカンマ区切りリストを使用します(例A-16を参照)。アプリケーションで複数のJSF構成ファイルを使用する場合、このパラメータを設定する必要があります(A.10.1項「faces-config.xmlでサポートされるタスク」を参照)。
javax.faces.DEFAULT_SUFFIX
: JSFコンポーネントを含むJSPページのファイル拡張子(接尾辞)を指定します。デフォルト値は.jsp
です。
javax.faces.LIFECYCLE_ID
: javax.faces.lifecycle.LifecycleFactory.DEFAULT_LIFECYCLE
定数によるデフォルト設定以外のライフサイクル識別子を指定します。
アプリケーションに複数のフィルタがある場合、実行する順番でweb.xml
に記載されている必要があります。実行時には、ファイル内に記載された順番でフィルタがコールされます。
ADF Facesでは、デバッグ・セッションの実行時にロギング機能を提供するために、JavaロギングAPI(java.util.logging.Logger
)を使用します。Javaロギングは、Javaプラットフォーム(JDK 1.4以上)で使用可能な標準的なAPIです。主要な要素は、http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html
の『Java Logging Overview』を参照してください。
通常、j2ee-logging.xml
では、次の設定を構成できます。
Oracle ADFパッケージのロギング・レベルを変更します。A.9.1.1項を参照してください。
JDeveloperのデフォルトのログ・ウィンドウとは別に、ファイルなどの場所にログ出力をリダイレクトします。A.9.1.2項を参照してください。
ログ・ファイルを格納する場所のディレクトリ・パスを変更します。A.9.1.3項を参照してください。
j2ee-logging.xml
ファイルでは、次のJSFタスクがサポートされます。
個々のOracle ADFパッケージのロギング・レベルを変更する場合、j2ee-logging.xml
の<loggers>
要素の<logger>
を編集します(例A-17を参照)。デフォルトのロギング・レベルは、INFO
です。詳細なログ・メッセージを記録する場合は、level="FINE"
に設定することをお薦めします。パッケージ名の指定では、下位の階層も含まれることに注意してください。つまり、oracle.adf
のレベルを変更すると、その指定レベルはoracle.adf
というパスで始まるすべてのクラスに適用されます。特定クラスのレベルを変更するには、フルパスを指定します。たとえば、パッケージ名oracle.adf.controller
に対するレベル設定は、oracle.adf
パッケージの他のブランチには適用されません。
ADFアプリケーションをデバッグする際のロギング設定の詳細は、16.4.2項「Oracle ADFデバッグ構成の作成」を参照してください。
デフォルトのログ出力(name="oracle"
)は、ファイル出力とコンソール出力(JDeveloperのログ・ウィンドウ)の2つのハンドラに関連付けられています。デフォルトでは、ログ・メッセージは同時に2つの場所に出力されます。ログ・メッセージの出力をリダイレクトする場合、j2ee-logging.xml
の<logger>
要素の<handler>
を編集します(例A-18を参照)。たとえば、JDeveloperのログ・ウィンドウにのみ出力を表示するには、<handler name="oc4j-handler"/>
をコメント・アウトします。
ログ・ファイルの格納場所を変更する場合、j2ee-logging.xml
の<log_handlers>
要素の<log_handler>
を編集します(例A-19を参照)。ログ・ファイルのデフォルト・ディレクトリは、../log/oc4j
です。
バリデータ、コンバータ、マネージドBean、アプリケーション・ナビゲーション・ルールなどのJSFアプリケーション・リソースは、アプリケーション構成ファイルに登録します。通常は、faces-config.xml
という1つの構成ファイルを使用します。
注意: JSFアプリケーションでは、複数のJSF構成ファイルを使用できます。たとえば、アプリケーションの個々の領域にそれぞれ専用のJSF構成ファイルを必要とする場合や、カスタムのコンポーネントまたはレンダラを含むライブラリをパッケージする場合、それらの領域やライブラリごとに個別のJSF構成ファイルを作成できます。詳細は、4.2.3項「複数のJSF構成ファイルについての考慮事項」を参照してください。 |
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、空のfaces-config.xml
ファイルが/WEB-INF
に自動的に作成されます。
通常、faces-config.xml
では、次の設定を構成できます。
デフォルト・レンダー・キット、メッセージ・バンドル、サポートされるロケールなどのアプリケーション・リソース。A.10.1.1項、A.10.1.3項およびA.10.1.4項を参照してください。
ページ間のナビゲーション・ルール。A.10.1.5項を参照してください。
カスタム・バリデータおよびコンバータ。A.10.1.6項を参照してください。
データの格納と処理、UIイベントの処理、およびビジネス・ロジックの実行を行うマネージドBean。
ADFデータ・コントロールを使用してデータ・バインドされたWebページを作成する場合、ADFフェーズ・リスナーもfaces-config.xml
に登録する必要があります。A.10.1.2項を参照してください。
faces-config.xml
ファイルでは、次のJSFタスクがサポートされます。
アプリケーションでADF Facesコンポーネントを使用する場合、faces-config.xml
の<application>
要素にADFのデフォルト・レンダー・キットを追加する必要があります。すでに述べたように、JSFテクノロジを使用するプロジェクトを新規作成すると、空のfaces-config.xml
ファイルが1つ自動的に作成されます。ADF Facesコンポーネントを最初にJSFページに挿入したときに、ADFコンポーネントのデフォルト・レンダー・キットが自動的にfaces-config.xml
に挿入されます(例A-20を参照)。
例A-20 ADF Facesコンポーネント用のfaces-config.xmlの構成
<?xml version="1.0" encoding="windows-1252"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config xmlns="http://java.sun.com/JSF/Configuration">
...
<!-- Default render kit for ADF components -->
<application>
<default-render-kit-id>oracle.adf.core</default-render-kit-id>
</application>
...
</faces-config>
ADFフェーズ・リスナーは、ADFページ・ライフサイクルを実行するために使用されます。ADFデータ・バインディングを使用する場合、ADFライフサイクル・フェーズ用のフェーズ・リスナーを指定する必要があります。JDeveloperでADFデータ・コントロールを最初にJSFページに挿入したときに、標準のADFフェーズ・リスナーがfaces-config.xml
の<lifecycle>
要素に追加されます。
ADFフェーズ・リスナーは、すべてのJSFフェーズをリスニングし、必要に応じてそれらのフェーズの前後にモデルの準備、モデル更新の検証、およびレンダリングするページの準備に伴う独自フェーズを実行します。ADFライフサイクル・フェーズがJSFライフサイクル・フェーズと統合される仕組みの詳細は、6.2.3項「実行時に行われる処理: JSFおよびADFのライフサイクル」を参照してください。例A-21は、ADFフェーズ・リスナーを含むfaces-config.xml
の一部を示しています。
エラー処理などのカスタム動作が必要な場合、標準のADFフェーズ・リスナーをサブクラス化できます。ADFフェーズ・リスナーをサブクラス化する方法の詳細は、12.8項「ADFアプリケーション内の例外の処理と表示」を参照してください。サブクラスが検出された場合、faces-config.xml
に標準のフェーズ・リスナーは読み取られません。
ローカライズされたラベルおよびメッセージ用にリソース・バンドルを使用する場合、faces-config.xml
の<application>
要素に<message-bundle>
としてリソースを追加します(例A-22を参照)。SRDemoアプリケーションでは、UIの文字列を格納するためにリソース・プロパティ・ファイルを使用しています。
例A-22 faces-config.xmlでのメッセージ・バンドルの登録
<faces-config xmlns="http://java.sun.com/JSF/Configuration"> ... <application> ... <message-bundle>oracle.srdemo.view.resources.UIResources</message-bundle> ... </application> ... </faces-config>
ページでメッセージ・バンドルを参照する方法の詳細は、14.4項「アプリケーションの国際化」を参照してください。
アプリケーションのデフォルト・ロケールとサポートされるすべてのロケールは、faces-config.xml
の<application>
要素に登録します(例A-23を参照)。
例A-23 faces-config.xmlでのデフォルトおよびサポートされるロケールの登録
<faces-config xmlns="http://java.sun.com/JSF/Configuration"> ... <application> ... <locale-config> <default-locale>en</default-locale> <supported-locale>en-US</supported-locale> <supported-locale>es</supported-locale> <supported-locale>fr</supported-locale> </locale-config> </application> ... </faces-config>
ナビゲーション・ルールおよびケースはfaces-config.xml
ファイルに直接入力できますが、JSFナビゲーション・モデラーを使用することをお薦めします。ナビゲーション・モデラーを使用すると、JSFアプリケーションの各ページをレイアウトして、ダイアグラム形式でページ間のナビゲーションを追加できます。ナビゲーション・モデラーを表示するには、アプリケーション・ナビゲータでfaces-config.xml
ファイルをダブルクリックします。ビジュアル・エディタで「ダイアグラム」タブをアクティブにすると、ナビゲーション・モデラーが表示されます。
JDeveloperで空のfaces-config.xml
が最初に作成されたときに、レイアウトや注釈などのダイアグラム詳細を保持するためのダイアグラム・ファイルも作成されます。JDeveloperでは、常にこのダイアグラム・ファイルは、faces-config.xml
ファイルとともに保持され、アプリケーションで必要となるすべての設定が保持されます。そのため、バージョニングやソース・コントロールを使用する場合、ダイアグラム・ファイルは対応するfaces-config.xml
ファイルに含まれます。
ダイアグラムにナビゲーション・ケースを追加すると、faces-config.xml
に反映されます。ファイルを直接編集する必要はありません。
ナビゲーション・ルールでは、結果値を指定する1つ以上のケースを定義します。Webページのナビゲーション・コンポーネントでは、結果値がそのaction
属性に指定されており、ユーザーがそのコンポーネントをクリックすると特定のナビゲーション・ケースが起動されます。たとえば、サンプル・アプリケーションのSRListページでは、ユーザーが「View」ボタンをクリックするとアプリケーションにSRMainページが表示されます。「View」ボタンのaction
属性には、文字列値View
が設定されています(例A-24を参照)。例A-25は、SRListページのナビゲーション・ルール内のナビゲーション・ケースに対応するコードを示しています。
例A-24 「View」ボタンに定義されたアクション結果文字列
<af:commandButton text="#{res['srlist.buttonbar.view']}"
action="View"/>
例A-25 faces-config.xmlでの静的なナビゲーション・ケースの作成
<faces-config xmlns="http://java.sun.com/JSF/Configuration"> ... <navigation-rule> <from-view-id>/SRList.jspx</from-view-id> <navigation-case> <from-outcome>Edit</from-outcome> <to-view-id>/SREdit.jspx</to-view-id> </navigation-case> <navigation-case> <from-outcome>View</from-outcome> <to-view-id>/SRMain.jspx</to-view-id> </navigation-case> <navigation-case> <from-outcome>Search</from-outcome> <to-view-id>/SRSearch.jspx</to-view-id> </navigation-case> <navigation-case> <from-outcome>Create</from-outcome> <to-view-id>/SRCreate.jspx</to-view-id> </navigation-case> </navigation-rule> ... </faces-config>
JSFのナビゲーション・ルール、ナビゲーション・ケースおよびナビゲーション・コンポーネントを作成する方法の詳細は、第9章「ページ・ナビゲーションの追加」を参照してください。
JSFおよびADF Facesの標準のバリデータおよびコンバータでは、数値範囲と文字列長の一般的な検証チェックと、よく使用されるデータ型の変換機能が提供されます。より複雑な検証用のルールとチェックが必要な場合、またはコンポーネント・データを標準型以外の型に変換する必要がある場合、独自のカスタム・バリデータまたはコンバータを作成できます。
カスタム・バリデータはjavax.faces.validator.Validator
インタフェースを、カスタム・コンバータはjavax.faces.convert.Converter
インタフェースをそれぞれ実装する必要があります。アプリケーションでカスタム・バリデータまたはコンバータを使用するには、<validator>
または<converter>
要素を使用してそれらをfaces-config.xml
に登録する必要があります(例A-26を参照)。カスタム・バリデータの場合、識別子(ID)で登録できます。カスタム・コンバータの場合、IDまたは特定のデータ型の完全修飾クラス名で登録できます。
例A-26 faces-config.xmlでのカスタム・バリデータおよびコンバータの登録
<faces-config xmlns="http://java.sun.com/JSF/Configuration"> ... <validator> <validator-id>oracle.srdemo.core.CreditCard</validator-id> <validator-class>oracle.srdemo.core.CreditCardValidator</validator-class> </validator> <converter> <converter-id>oracle.srdemo.core.CreditCard</validator-id> <converter-class>oracle.srdemo.core.CreditCardConverter</converter-class> </converter> ... </faces-config>
JSFにおいて、マネージドBeanは、アプリケーションのWeb層とビジネス層の間のデータ管理に使用されるJavaBeansです(データ転送オブジェクトと同様です)。実行時に値やメソッド・バインディング式を通じてページでBeanが参照されると、JSF実装により、Beanのインスタンス化、宣言されたデフォルト値の移入、およびマネージドBeanスコープへのBeanの配置がfaces-config.xml
の定義どおりに実行されます。
faces-config.xml
にマネージドBeanを登録するには、<managed-bean>
要素を使用します(例A-27を参照)。マネージドBeanには次の項目を指定する必要があります。
名前: Beanの完全修飾クラス名を使用するかわりにEL式を使用してアプリケーション内でBeanを参照する方法を指定します。
クラス: データと、Beanによって使用されるそのデータ用のアクセッサ・メソッドやその他のメソッド(ナビゲーションまたは検証用など)を保持するプロパティを含むJavaBeanです。これには、既存クラス(データ転送クラスなど)またはページに固有のクラス(バッキングBeanなど)を使用できます。
スコープ: Beanの保存されるスコープを指定します。有効なスコープは、次のとおりです。
application
: Beanは、Webアプリケーションが継続する間使用できます。LDAPディレクトリなどのグローバルBeanに適しています。
request
: Beanは、インスタンス化されてから、レスポンスがクライアントに戻されるまで使用できます。通常、現在ページの有効期間です。
session
: Beanは、クライアントのセッション全体を通じてクライアントで使用できます。
none
: Beanは、参照されるたびにインスタンス化されます。
管理プロパティは、Beanがインスタンス化されたときに値を移入できるBeanの任意のプロパティです。Beanが作成されると、宣言された各プロパティに対してsetメソッドが実行されます。マネージドBeanのプロパティを設定値(Beanのマップまたはリスト・プロパティ用の設定値を含む)で初期化するには、<managed-property>
要素を使用します。マネージドBeanの管理プロパティを構成する場合、そのプロパティの名前、クラス・タイプおよびデフォルト値を宣言します。
マネージドBeanとマネージドBeanのプロパティは、BeanまたはプロパティのタイプがListまたはMapであるか、java.util.Map
またはjava.util.List
を実装することを指定すると、リストまたはマップとして初期化できます。リストまたはマップ内の値のデフォルトは、java.lang.String
です。
例A-27 faces-config.xmlでのマネージドBeanの登録
<faces-config xmlns="http://java.sun.com/JSF/Configuration"> ... <!-- This managed bean uses application scope --> <managed-bean> <managed-bean-name>resources</managed-bean-name> <managed-bean-class> oracle.srdemo.view.resources.ResourceAdapter </managed-bean-class> <managed-bean-scope>application</managed-bean-scope> </managed-bean> <!-- Page backing beans typically use request scope--> <managed-bean> <managed-bean-name>backing_SRCreate</managed-bean-name> <managed-bean-class>oracle.srdemo.view.backing.SRCreate</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <!--oracle-jdev-comment:managed-bean-jsp-link:1app/SRCreate.jspx--> <managed-property> <property-name>bindings</property-name> <value>#{bindings}</value> </managed-property> </managed-bean> <managed-bean> <managed-bean-name>backing_SRManage</managed-bean-name> <managed-bean-class> oracle.srdemo.view.backing.management.SRManage </managed-bean-class> <managed-bean-scope>request</managed-bean-scope> <!--oracle-jdev-comment:managed-bean-jsp-link:1app/management/SRManage.jspx--> <managed-property> <property-name>bindings</property-name> <value>#{bindings}</value> </managed-property> </managed-bean> <!-- This managed bean uses session scope --> <managed-bean> <managed-bean-name>userState</managed-bean-name> <managed-bean-class>oracle.srdemo.view.UserSystemState</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> ... </faces-config>
ADF Facesコンポーネントを使用するJSFアプリケーションを作成する場合、faces-config.xml
で要素を構成する以外に、adf-faces-config.xml
ファイルでADF Faces固有の機能を構成できます。adf-faces-config.xml
ファイルは、JSF式言語(EL)または静的値を使用して要素プロパティを定義できる単純なXML構造を持っています。
JDeveloperでADF Facesコンポーネントを最初にJSFページに挿入したときに、初期のadf-faces-config.xml
ファイルがViewControllerプロジェクトの/WEB-INF
ディレクトリに自動的に作成されます。例A-28は、初期のadf-faces-config.xml
ファイルを示しています。
通常、adf-faces-config.xml
では、次の設定を構成できます。
ページ・アクセシビリティ・レベル
スキン・ファミリ
タイムゾーン
拡張デバッグ機能
Oracle Help for the Web(OHW)のURL
例A-28 JDeveloperにより作成される初期のadf-faces-config.xml
<?xml version="1.0" encoding="windows-1252"?> <adf-faces-config xmlns="http://xmlns.oracle.com/adf/view/faces/config"> <skin-family>oracle</skin-family> </adf-faces-config>
adf-faces-config.xml
ファイルでは、次のJSFタスクがサポートされます。
アプリケーションでのアクセシビリティ・サポートのレベルを定義するには、<accessibility-mode>
を使用します。サポートされる値は次のとおりです。
default
: 出力でアクセシビリティ機能がサポートされます。
inaccessible
: 出力サイズを最適化するため、アクセシビリティ固有の構成要素は削除されます。
screenReader
: スクリーン・リーダーによる機能向上を目的として、アクセシビリティ固有の構成要素が追加されます(ただし、一般のユーザーには適切ではない場合があります。たとえば、アクセシビリティ・モードがスクリーン・リーダー・モードに設定されていると、アクセス・キーは表示されません)。
通貨フィールドの書式設定に使用する通貨コードを指定する場合、および数値の桁と小数点に使用する区切り記号を定義する場合、次の要素を使用します。
<currency-code>
: 独自のコンバータで通貨コードが指定されない通貨フィールドを書式設定するため、oracle.adf.view.faces.converter.NumberConverter
によって使用されるデフォルトのISO 4217通貨コードを定義します。
<number-grouping-separator>
: 数値の桁に使用する区切り記号(カンマなど)を定義します。ADF Facesでは自動的に現行ロケールからセパレータが導出されますが、この要素内に値を指定することで、このデフォルトをオーバーライドできます。設定すると、解析および書式設定時にその値がoracle.adf.view.faces.converter.NumberConverter
によって使用されます。
<decimal-separator>
: 小数点に使用する区切り記号(ピリオドやカンマなど)を定義します。ADF Facesでは自動的に現行ロケールからセパレータが導出されますが、この要素内に値を指定することで、このデフォルトをオーバーライドできます。設定すると、解析および書式設定時にその値がoracle.adf.view.faces.converter.NumberConverter
によって使用されます。
例A-30 通貨コードおよび数値の桁/小数点の区切り記号の構成
<!-- Set the currency code to US dollars. --> <currency-code>USD</currency-code> <!-- Set the number grouping separator to period for German --> <!-- and comma for all other languages --> <number-grouping-separator> #{view.locale.language=='de' ? '.' : ','} </number-grouping-separator> <!-- Set the decimal separator to comma for German --> <!-- and period for all other languages --> <decimal-separator> #{view.locale.language=='de' ? ',' : '.'} </decimal-separator>
<debug-output>
をtrueに設定すると、ADF Facesのデバッグ出力機能が拡張されます。デバッグ出力に次の機能が追加されます。
自動インデント
HTMLのブロックを処理したコンポーネントを識別するコメント
適切に対応していない要素、単一要素での同一属性の反復使用、またはその他の不適切なマークアップ問題の検出
一般的なHTMLエラー(他の<form>
タグ内部の<form>
タグ、または不適切な場所で使用されている<tr>
や<td>
タグなど)の検出
ADF Facesのバリデータとコンバータでは、サーバー側の検証および変換と同様に、クライアント側の検証および変換がサポートされます。ADF Facesのクライアント側のバリデータおよびコンバータは、サーバー側のバリデータおよびコンバータと同じように動作しますが、クライアントではJavaScriptが使用されます。ADF FacesのJavaScript対応のバリデータとコンバータは、フォームの送信時にクライアントで実行されるため、サーバーへのラウンドトリップなしでエラーを捕捉できます。ただし、<client-validation-disabled>
をtrueに設定することで、ADF Facesアプリケーションでクライアント側の変換と検証を無効化できます。
ADF Facesのデフォルトのページ・レンダリング方向は、ブラウザで使用されている言語に基づきます。ただし、<right-to-left>
要素でtrueまたはfalseを使用することにより、デフォルトのページ・レンダリング方向を明示的に設定できます。
ADF Facesのデフォルトでは、すべてのページにOracleの<skin-family>
が使用されます。この設定を変更するには、カスタムの<skin-family>
を指定します。A.12.1項「adf-faces-skins.xmlでサポートされるタスク」も参照してください。
カスタム・スキンの作成方法の詳細は、14.3項「スキンの使用によるルック・アンド・フィールの変更」を参照してください。
ADF Facesで使用される出力モードを変更するには、次のいずれかの値を使用して<output-mode>
要素を設定します。
default
: デフォルトのページ出力モード(通常表示)
printable
: 印刷可能なページに適した出力モード
email
: ページ・コンテンツの電子メール送信に適した出力モード
ADF Facesのデフォルトでは、アクティブなprocessScope
インスタンスの最大数が15に設定されます。この数を変更するには、<process-scope-lifetime>
要素を使用します。静的値を使用する必要があります。
日付を処理して表示するためのタイムゾーンと、2桁のみの年を解析するための年オフセットを設定するには、次の要素を使用します。
<time-zone>
: ADF Facesのデフォルトでは、クライアント・ブラウザのタイムゾーンが使用されます。この値は、文字列がDate
に変換される際に、oracle.adf.view.faces.converter.DateTimeConverter
によって使用されます。
<two-digit-year-start>
: 値が設定されない場合、デフォルトで1950年が使用されます。この値は、文字列がDate
に変換される際に、oracle.adf.view.faces.converter.DateTimeConverter
によって使用されます。
ほとんどのアプリケーションでは、ADF Facesにより提供されるデフォルトのUploadedFileProcessor
インスタンスを置き換える必要はありません。ただし、アプリケーションで非常に大きなファイルのアップロードをサポートする必要がある場合や、アプリケーションがファイル・アップロードに大きく依存している場合、デフォルトのプロセッサをカスタムのUploadedFileProcessor
実装で置き換えることもできます。たとえば、リクエスト時にADF Facesで一時記憶域を使用するかわりに、ファイルを最終的な保存先に即座に格納する実装を使用することで、パフォーマンスが向上する可能性があります。デフォルトのプロセッサを置き換えるには、<uploaded-file-processor>
要素を使用してカスタム実装を指定します。
アプリケーションにヘルプを提供するためにOracle Help for the Web(OHW)を使用する場合、URLに対応する任意のJSFタグにヘルプ・コンテンツを添付できます。これを行うには、<oracle-help-servlet-url>
要素を使用してヘルプ・サイトのURLを構成します。ADF Facesでは、OHWリリース2.0と、それ以前のリリースがサポートされます。
ヘルプ・コンテンツをJSFタグに添付するには、adfFacesContext.helpTopic
ELオブジェクトを使用します。たとえば、次のように入力します。
<h:outputLink value="#{adfFacesContext.helpTopic.someTopicID}"> <h:outputText value="Help!"/> </h:outputLink>
adf-faces-config.xml
ファイルで要素を構成すると、次の方法のいずれかを使用してプロパティ値を取得できます。
AdfFacesContext
クラスをプログラムで使用します。
AdfFacesContext
クラスは、ADF Facesで必要とされるリクエスト単位およびWebアプリケーション単位のすべての情報に対応するコンテキスト・クラスです。AdfFacesContext
クラスのインスタンスは、リクエストごとに1つ存在します。JSFのFacesContext
クラスと似ていますが、AdfFacesContext
クラスはFacesContext
を拡張したものではありません。
ADF Faces構成プロパティをプログラム的に取得するには、最初にgetCurrentInstance()
staticメソッドをコールしてAdfFacesContext
オブジェクトのインスタンスを取得し、次に目的のプロパティを取得するメソッドをコールします。次にこの例を示します。
// Get an instance of the AdfFacesContext object AdfFacesContext context = AdfFacesContext.getCurrentInstance(); // Get the time-zone property TimeZone zone = context.getTimeZone(); // Get the right-to-left property if (context.isRightToLeft()) { ... }
ADF Facesの構成プロパティを取得するメソッドのリストは、oracle.adf.view.faces.context.AdfFacesContext
のJavadocを参照してください。
JSF EL式を使用して、コンポーネントの属性値をADF Faces暗黙オブジェクト(adfFacesContext
)のプロパティの1つにバインドします。
AdfFacesContext
クラスには、adfFacesContext
というEL暗黙的変数があり、JSF EL式で使用するためのコンテキスト・オブジェクト・プロパティを公開します。JSF EL式を使用して、コンポーネントの属性値をadfFacesContext
オブジェクトのプロパティの1つにバインドできます。たとえば、次のEL式では、<currency-code>
プロパティがJSF ConvertNumber
コンポーネントのcurrencyCode
属性値にバインドされています。
<af:outputText> <f:convertNumber currencyCode="#{adfFacesContext.currencyCode}"/> </af:outputText>
adf-faces-skins.xml
ファイルはオプションです。このファイルは、アプリケーションでカスタム・スキンを使用する場合にのみ必要です。このファイルを作成するには、テキスト・エディタを使用します。作成したファイルは、/WEB-INF
に格納してください。
adf-faces-skins.xml
では、1つ以上のカスタム・スキンを指定できます。
例A-40 adf-faces-skins.xml
<?xml version="1.0" encoding="windows-1252"?> <skins xmlns="http://xmlns.oracle.com/adf/view/faces/skin"> <skin> <id>purple.desktop</id> <family>purple</family> <render-kit-id>oracle.adf.desktop</render-kit-id> <style-sheet-name>skins/purple/purpleSkin.css</style-sheet-name> <bundle-name>oracle.adfdemo.view.faces.resource.SkinBundle</bundle-name> </skin> </skins>
カスタム・スキンを使用するようアプリケーションを構成する場合、<family>
の値には、adf-faces-config.xml
の<skin-family>
要素と同じ値を指定します。A.11.1.6項「スキン・ファミリの構成」を参照してください。
カスタム・スキンの作成方法の詳細は、14.3項「スキンの使用によるルック・アンド・フィールの変更」を参照してください。