| Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド 11gリリース1 (11.1.1.7.0) B52029-07 |
|
![]() 前 |
![]() 次 |
この付録では、JSFおよびADF Facesの機能を各種XML構成ファイルで構成する方法、RequestContext APIを使用してADF Faces構成値を取得する方法、およびJavaScriptのパーティション化の使用方法について説明します。
この章では、次の項目について説明します。
JSF Webアプリケーションには、特定の構成ファイルのセット(web.xmlおよびfaces-config.xml)が必要です。ADFアプリケーションでは、構成情報がadf-config.xmlファイルおよびadf-settings.xmlファイルにも格納されます。ADF FacesはMyFaces Trinidadと同じコード・ベースを共有するため、UIにADF Facesコンポーネントを使用するJSFアプリケーションでは、trinidad-config.xmlファイル(オプションでtrinidad-skins.xmlファイル)も含める必要があります。TrinidadとADF Facesとの関係の詳細は、第1章「ADF Facesリッチ・クライアントの概要」を参照してください。
JSFアプリケーションの構成の一部は、Java EEアプリケーション・デプロイメント・ディスクリプタ(web.xml)の内容で決まります。/WEB-INFディレクトリにあるweb.xmlファイルでは、サーバーが認識する必要のあるアプリケーションに関するすべての情報(JDeveloperで自動的に割り当てられる、あるいはアプリケーションのデプロイ時にシステム管理者によって割り当てられるルート・コンテキスト・パス以外)を定義する必要があります。web.xmlファイルでの典型的なランタイム設定には、初期化パラメータ、カスタム・タグ・ライブラリの場所およびセキュリティ設定があります。
ADF Facesを使用するすべてのアプリケーションに対する次の設定がweb.xmlファイルで構成されます。
clientに設定されたjavax.faces.STATE_SAVING_METHODコンテキスト・パラメータ
MyFaces Trinidadフィルタおよびマッピング
MyFacesTrinidadリソース・サーブレットおよびマッピング
JSFサーブレットおよびマッピング
|
注意: ADF Facesコンポーネントをアプリケーションで最初に使用した際に、JDeveloperで、必要なADF Faces構成が |
必要な要素の詳細は、A.2.2項「web.xmlに必要な要素について」を参照してください。
web.xmlのADF Faces関連のオプションの構成要素の詳細は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
ADF Faces以外のweb.xmlの構成の詳細は、『Oracle Fusion Middleware Developing Web Applications, Servlets, and JSPs for Oracle WebLogic Server』を参照してください。
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、デフォルト・サーブレットとマッピング要素を使用して、web.xmlの基礎ファイルが/WEB-INFディレクトリに作成されます。
プロジェクトでADF Facesコンポーネントを使用(ライブラリをインポートするだけでなく、コンポーネント・タグをページで使用)する場合、JDeveloperで、デフォルトJSF構成要素だけでなく、次のものもweb.xmlに自動的に追加されます。
MyFaces TrinidadフィルタおよびMyFaces Trinidadリソース・サーブレットに関連する構成要素
clientの値を持つjavax.faces.STATE_SAVING_METHODコンテキスト・パラメータ
アプリケーションでJSPフラグメントを使用するよう選択した場合、アプリケーションで.jsffファイルを認識および解釈するためのJSP構成要素が、JDeveloperで自動的に追加されます。
例A-1に、JSF、ADF Facesおよび.jsffファイルを使用する場合にJDeveloperで追加されるデフォルト要素を持つweb.xmlファイルを示します。
JSFおよびADF Facesの処理に必要なweb.xml構成要素の詳細は、A.2.2項「web.xmlに必要な要素について」を参照してください。
例A-1 生成される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/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee">
<description>Empty web.xml file for Web Application</description>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>35</session-timeout>
</session-config>
<mime-mapping>
<extension>html</extension>
<mime-type>text/html</mime-type>
</mime-mapping>
<mime-mapping>
<extension>txt</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
</web-app>
|
注意: データバインドされたWebページの作成にADFデータ・コントロールを使用する場合、アプリケーション・バインディング・コンテナのADFバインディング・フィルタとサーブレット・コンテキスト・パラメータが |
ADF Facesの構成オプションは、<context-param>要素を使用してweb.xmlに設定されます。
web.xmlにADF Faces構成要素を追加する手順:
アプリケーション・ナビゲータで、「web.xml」をダブルクリックし、ファイルを開きます。
JDeveloperでは、web.xmlはデフォルトでは概要エディタで開きます。これは、エディタ・ウィンドウの下部の「概要」タブがアクティブなことで示されます。
概要エディタを使用してエントリを宣言的に追加または編集すると、JDeveloperでweb.xmlファイルが自動的に更新されます。
web.xmlファイルのXMLコードを直接編集するには、エディタ・ウィンドウの下部の「ソース」をクリックします。
XMLエディタで要素を編集すると、JDeveloperで変更が概要エディタに自動で反映されます。
追加できるコンテキスト・パラメータの一覧は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
web.xmlに必要なJSFおよびADF Facesに関するアプリケーション全体の構成要素は次のとおりです。
コンテキスト・パラメータjavax.faces.STATE_SAVING_METHOD: アプリケーションのビューの状態の格納場所を指定します。デフォルトでは、この値はclientであり、アプリケーションのビュー状態がブラウザ・クライアントに格納されます。clientに設定した場合、ADF Facesでトークンベースのクライアント側の状態保存が自動的に使用されます。デフォルトの15を使用するかわりに、使用するトークンの数を指定できます。状態保存コンテキスト・パラメータの詳細は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
MyFaces Trinidadのフィルタおよびマッピング: MyFaces Trinidadフィルタorg.apache.myfaces.trinidad.webapp.TrinidadFilterをインストールします。これは、RequestContextオブジェクトをある程度設定することで、ADF Facesが適切に初期化されるようにするサーブレット・フィルタです。TrinidadFilterでは、ファイル・アップロードも処理されます。フィルタ・マッピングは、JSFサーブレットのシンボリック名をADF Facesフィルタにマップします。転送ディスパッチャとリクエスト・ディスパッチャは、MyFaces Trinidadフィルタに転送する他のフィルタに必要です。
|
ヒント: アプリケーションで複数のフィルタを使用する場合、フィルタを実行順に |
MyFaces Trinidadのリソース・サーブレットとマッピング: MyFaces Trinidadリソース・サーブレットorg.apache.myfaces.trinidad.webapp.ResourceServletをインストールします。これは、リソース・ローダーに委譲することでWebアプリケーション・リソース(イメージ、スタイルシート、JavaScriptライブラリなど)を処理します。サーブレット・マッピングは、MyFaces Trinidadリソース・サーブレットのシンボリック名をURLパターンにマップします。JDeveloperは、デフォルトで/adf/*(MyFaces Trinidad Coreの場合)および/afr/*(ADF Facesの場合)を使用します。
JSFサーブレットおよびマッピング(JSFページを作成する場合、またはADF Facesコンポーネントにテンプレートを使用する場合に追加): JSFサーブレットservlet javax.faces.webapp.FacesServletでは、JSFを使用してユーザー・インタフェースを作成するWebアプリケーションのリクエスト処理ライフサイクルが管理されます。マッピングでは、JSFサーブレットのシンボリック名が、パス接頭辞または拡張子接尾辞パターンを使用するURLパターンにマップされます。
デフォルトでは、次のコードに示すように、パス接頭辞/faces/*がJDeveloperで使用されます。
<servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping>
たとえば、Webページがindex.jspxの場合、URL http://localhost:8080/MyDemo/faces/index.jspxが送信されると、このURLによってJSFサーブレットがアクティブ化されます。JSFサーブレットでfaces接頭辞が取り除かれ、/MyDemo/index.jspxファイルがロードされます。
ADF Facesの構成オプションは、<context-param>要素を使用してweb.xmlに定義されます。次に例を示します。
<context-param> <param-name>oracle.adf.view.rich.LOGGER_LEVEL</param-name> <param-value>ALL</param-value> </context-param>
ADF Facesでは、次のコンテキスト・パラメータがサポートされています。
次の状態保存コンテキスト・パラメータを指定できます。
org.apache.myfaces.trinidad.CLIENT_STATE_METHOD: クライアント側状態保存がjavax.faces.STATE_SAVING_METHODを使用して有効になっている場合、使用するクライアント側状態保存のタイプを指定します。CLIENT_STATE_METHODの値は次のとおりです。
token: (デフォルト)ページの状態はセッションに格納しますが、トークンはクライアントに永続させます。HttpSessionオブジェクトに格納されている状態のブロックを識別するシンプル・トークンは、クライアントに格納されます。これにより、複数回表示される同一ページがADF Facesで明確になります。フェイルオーバーがサポートされます。
all: すべての状態情報がクライアントの(場合によっては非常に大きい)非表示のフォーム・フィールドに格納されます。これは、HttpSessionを使用しない開発者にとって有用です。
|
パフォーマンスのヒント: ただし、すべての状態情報を格納するとサイズが大きくなる可能性があることから、クライアント側状態保存を |
org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS: トークンベースのクライアント側状態保存が有効な場合、ユーザー1人につき一度に格納する必要があるトークンの数を指定します。デフォルトは15です。トークンの数がこの値を超えると、表示頻度の最も低いページの状態が失われるため、「戻る」ボタンを頻繁に使用するユーザーや、同時に複数のウィンドウを開いているユーザーが影響を受けます。フレームへの依存度が高いHTMLアプリケーションを作成する場合は、この値を増やすことができます。
org.apache.myfaces.trinidad.COMPRESS_VIEW_STATE: セッションでの状態保存をグローバルに圧縮するかどうかを指定します。各ユーザー・セッションには、有効なメモリを大量に消費するpageStateオブジェクトが複数含まれることがあるため、パフォーマンスが影響を受けます。このオーバーヘッドは、セッション・レプリケーションが発生する場合、クラスタリングに関してかなり大きな問題になる可能性があります。デフォルトはoffです。
org.apache.myfaces.trinidad.USE_APPLICATION_VIEW_CACHE: アプリケーション表示キャッシュ(AVC)を有効にします。これにより、ページのUIの初期レンダーの状態をアプリケーションの範囲でキャッシュすることで、スケーラビリティが向上します。ただし、予想外の状態のデバッグやユーザー間の情報漏れに関する問題を回避するには、AVCでアプリケーションのすべてのページを分析してサポートする必要があります。また、サーバーの再起動までページ更新が通知されないため、開発はさらに難しくなり、初期レンダー・パフォーマンスは強化されますが、セッション・サイズは改善されません。
|
注意: アプリケーション表示キャッシュは、このリリースではサポートされません。この機能は、コンポーネント・ツリーのレンダリングが原因でコンポーネント・ツリーの構造が一時的に変わるページでは機能しません。これは頻繁に起こることがあるため、 |
次のデバッグ・コンテキスト・パラメータを指定できます。
org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT: ADF Facesでは、クライアントへ配信するJavaScriptの曖昧化がデフォルトで行われ、同時にコメントと空白が取り除かれます。これにより、ADF Faces JavaScriptのダウンロード・サイズが大幅に削減されますが、JavaScriptのデバッグが複雑にもなります。アプリケーションの開発時にはtrueに設定して、曖昧化を無効にします。アプリケーションのデプロイにはfalseに設定します。
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION: このパラメータは、デフォルトではfalseになります。trueに設定した場合、ADF FacesでJSPファイルとCSSファイルの更新日付が自動的に確認され、ファイルに変更があった場合、保存されている状態が破棄されます。
|
パフォーマンスのヒント:
|
oracle.adf.view.rich.LOGGER_LEVEL: このパラメータでは、デフォルト・レンダー・キットがoracle.adf.richの場合、JavaScriptロギングを有効にします。デフォルトは、OFFです。JavaScriptロギングを有効にする場合、SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST、ALLのいずれかのレベルを使用します。自動プロファイラ・インストルメンテーション・コードが有効(A.2.3.7項「プロファイリング」のoracle.adf.view.rich.profiler.ENABLEDを参照)な場合、INFOに設定します。
|
パフォーマンスのヒント: JavaScriptロギングはパフォーマンスに影響します。実行時環境では、この値は |
次のファイル・アップロード・コンテキスト・パラメータを指定できます。
org.apache.myfaces.trinidad.UPLOAD_MAX_MEMORY: 1回のリクエストでアップロード・ファイルを格納するために使用できる最大メモリー容量を指定します。デフォルトは、100Kです。
org.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACE: 1回のリクエストでアップロード・ファイルを格納するために使用できる最大ディスク容量を指定します。デフォルトは、2000Kです。
org.apache.myfaces.trinidad.UPLOAD_TEMP_DIR: ファイル・アップロード中に一時ファイルを格納するディレクトリを指定します。デフォルトは、ユーザーの一時ディレクトリです。
|
注意: ファイル・アップロードの初期化パラメータは、デフォルトの |
次の内容を指定できます。
org.apache.myfaces.trinidad.resource.DEBUG: リソース・デバッグ・モードが有効かどうかを指定します。デフォルトは、falseです。リソース・デバッグ・モードを有効にする場合、trueに設定します。有効な場合、リソース(JavaScriptライブラリ、イメージ、CSSなど)がキャッシュ可能なことがブラウザで認識されるよう、ADF FacesによってHTTPレスポンス・ヘッダーが設定されます。
|
ヒント: リソース・デバッグ・モードを有効にした後、ブラウザのキャッシュをクリアして、ブラウザでリソースの最新バージョンがロードされるようにします。 |
|
パフォーマンスのヒント: 本番環境では、このパラメータは削除するか、 |
oracle.adf.view.rich.ASSERT_ENABLEDパラメータを使用して、ADF Faces内でアサーションを使用するかどうかを指定できます。デフォルトは、falseです。アサーションを有効にするにはtrueに設定します。
|
パフォーマンスのヒント: アサーションにより、パフォーマンスが影響を受けます。実行時環境では、この値は |
Real User Experience Insight(RUEI)はWebベースのユーティリティで、ネットワークからリクエストされる、またはネットワークで生成される実際のユーザーのトラフィックに対してレポートを作成します。ネットワーク・インフラストラクチャの最も重要となるポイントで、ページやトランザクションのレスポンス時間を測定します。セッション診断情報を使用すれば、根本原因分析を実行できます。
RUEIでは、実際のユーザー体験に基づいてサーバーおよびネットワーク時間を表示し、キー・パフォーマンス・インディケータ(KPI)とサービス・レベル合意(SLA)を監視し、定義済のターゲットに違反するインシデントが発生した場合にアラート通知をトリガーすることが可能です。ページ・コンテンツ、サイト・エラー、およびトランザクションの機能要件に関するチェックを実施できます。この情報を使用することで、業務面、技術面から運用を検証できます。RUEIで認識されるすべての項目の可用性、スループットおよびトラフィックに関して、カスタム・アラートを設定することもできます。
web.xmlファイルにパラメータを追加して、その値をtrueに設定し、RUEIでoracle.adf.view.faces.context.ENABLE_ADF_EXECUTION_CONTEXT_PROVIDERを有効にするかどうかを指定します。デフォルトでは、このパラメータは設定されていないかfalseに設定されています。
RUEIの詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』のReal User Experience Insightに対するアプリケーションの有効化に関する項を参照してください。
次のJavaScriptプロファイリング・コンテキスト・パラメータを指定できます。
oracle.adf.view.rich.profiler.ENABLED: JavaScript Profilerで用意されている自動プロファイラ・インストルメンテーション・コードを使用するかどうかを指定します。デフォルトは、falseです。JavaScriptプロファイルを有効にするにはtrueに設定します。プロファイラが有効な場合、各ページでプロファイラ・データをフェッチするために追加のラウンドトリップが必要になります。デフォルトでは、/WEB-INF/profiler.xml構成ファイルがJDeveloperで使用されます。profiler.xmlの場所をオーバーライドするには、次に説明するROOT_FILEコンテキスト・パラメータを使用します。DEBUG_JAVASCRIPTをtrueに設定し、JavaScriptの曖昧化を無効にする場合もあります。LOGGER_LEVELを最低でもINFOに設定する必要もあります。
oracle.adf.view.rich.profiler.ROOT_FILE: 自動プロファイラ・インストルメンテーション・コードが有効の場合にロードする初期profiler.xmlファイルを指定します。ROOT_FILEが指定されていない場合、デフォルトでは、/WEB-INF/profiler.xmlファイルがJDeveloperで使用されます。
FaceletとADF Facesを組み合せて使用する場合、次の指定を行う必要があります。
org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER: パラメータの値をcom.sun.facelets.FaceletViewHandlerに設定して、FaceletsViewHandlerをインストールします。
javax.faces.DEFAULT_SUFFIX: パラメータの値を.xhtmlに設定して、Faceletを使用するドキュメントのファイル拡張子に.xhtmlを使用します。
ダイアログを起動する接頭辞を変更するには、org.apache.myfaces.trinidad.DIALOG_NAVIGATION_PREFIXパラメータを設定します。
デフォルトはdialog:で、ダイアログを起動するJSFナビゲーション・ルールの結果の冒頭に使用されます(dialog:errorなど)。
org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSIONパラメータを設定して、スキニング・キーのCSSクラス名の圧縮を決定できます。
デフォルトは、falseです。圧縮を無効にする場合、trueに設定します。
|
パフォーマンスのヒント: 圧縮により、パフォーマンスが影響を受けます。本番環境では、このパラメータを |
oracle.adf.view.rich.automation.ENABLEDパラメータをtrueに設定し、コンポーネントID属性がnullの場合、自動テストの際、IDがnullでないようコンポーネントのtestId属性が使用されます。testIdは、タグでのみ属性になります。これは、JavaコンポーネントAPIの一部ではありません。このコンテキスト・パラメータで有効化されるのはテスト自動化のインフラストラクチャのみであり、テスト自体は開始されません。テストを開始するには、オープン・ソースのSelenium IDEのようなツールが必要になります。
|
注意: テスト自動化コンテキスト・パラメータを |
また、テスト自動化を有効化することによって、実行中のアプリケーションでアサーションが有効になります。使用しているアプリケーションで予想外のコンポーネント動作が発生し、新規アサーションの失敗エラーが表示されるようになったら、アプリケーション・コンポーネントの実装の詳細を調べる必要があります。たとえば、応答のなくなったユーザー・アクションなど、ポップアップ・ダイアログ関連の問題が発見されることは珍しいことではありません。
テスト自動化を有効にした後でのみアサーション失敗エラーを生成する既知のコーディング・エラーが表示されます。
ユーザーのコンポーネントでは、もはやページ定義ファイルに存在しないADFイテレータ・バインディングを参照します。アサーションが有効になっていない場合、このエラーは表示されず、存在していないイテレータを参照するコンポーネントはレンダリングしません。
ユーザーのコンポーネントは、レンダリングしないように定義されている部分トリガー・コンポーネントです(属性がrendered="false"に設定されています)。たとえば、レンダリングされた属性の使用によってアサーション失敗エラーが発生します。
<af:commandButton id="hiddenBtn" rendered="false" text="Test"/> <af:table var="row" id="t1" partialTriggers="::hiddenBtn">
このエラーの回避策として、rendered="false"ではなく、visible="false"に設定された属性を使用します。
ユーザーのコンポーネントは、イベントが適切なコンポーネント・ハンドラに到達できないようにするネスト化階層によって構成されています。たとえば、次のネスト化は正しくありません。
<af:commandLink
<af:showPopupBehavior
<af:image
<af:clientListener
したがって、次のように書き直す必要があります。
<af:commandLink
<af:image
<af:showPopupBehavior
<af:clientListener
システム管理者は、コマンドライン・フラグ-Doracle.adf.view.rich.automation.ENABLED=trueを指定してサーバーを起動することにより、スタンドアロンのOracle WebLogic Serverのレベルでテスト自動化を有効にできます。テスト自動化を有効にしてアプリケーション・サーバー・インスタンスでアプリケーションを実行すると、デプロイされたアプリケーションのweb.xmlファイルのコンテキスト・パラメータの設定がオーバーライドされます。
UIViewRootキャッシングを有効または無効にするには、org.apache.myfaces.trinidad.CACHE_VIEW_ROOTパラメータを使用します。トークンのクライアント側状態保存が有効な場合、MyFaces Trinidadは、各トークンを含むUIViewRootツリー全体をキャッシュしてさらに最適化を適用できます(これが、スレッド・セーフティやセッション・フェイルオーバーに影響を与えることはありません。)これは、AJAXインテンシブ・システムの主な最適化であり、UIViewRootツリーを再インスタンス化せずに、よりすばやくポストバックを処理できます。
キャッシングを有効にするには、org.apache.myfaces.trinidad.CACHE_VIEW_ROOTパラメータをtrueに設定します。これはデフォルト設定です。キャッシングを無効にするには、パラメータをfalseに設定します。
|
注意: この種のキャッシングは、一部のJSFテクノロジと干渉することが認識されています。特に、Apache MyFaces Tomahawk |
色調スタイルの使用をオフまたはオンにするには、oracle.adf.view.rich.tonalstyles.ENABLEDパラメータを使用します。色調スタイル・クラス.AFDarkTone、.AFMediumTone、.AFLightToneおよび.AFDefaultToneは、下位互換性の目的で引き続き使用できますが、テーマは置換スタイルとして提供されます。テーマは色調スタイルより作成しやすく、依存するセレクタが少ない上に、CSS包含セレクタも使用されません。このため、バグが少ない傾向にあります。1つのCSSファイル内のセレクタ数に対する制限により、色調スタイルおよびテーマの両方を、同じアプリケーションでサポートすることはできません。色調スタイルを無効にするには、falseに設定します。
部分ページ・ナビゲーションの有効/無効を切り替えるには、oracle.adf.view.rich.pprNavigation.OPTIONSパラメータを使用します。デフォルトでは、値はoffです。部分ページ・ナビゲーションでは、アプリケーション全体で同じベース・ページを使用し、単にページ本体のコンテンツを各ナビゲーションに置き換えます。この処理により、ページが新しくなるたびにJavaScriptライブラリとスタイルシートを再ロードする必要がなく、パフォーマンスが向上します。詳細は、7.4項「部分ページ・ナビゲーションの使用」を参照してください。
有効な値は次のとおりです。
on: アプリケーションのPPRナビゲーションを有効にします。
|
注意: パラメータを有効にする場合、ナビゲーションに含まれるコマンド・コンポーネントの |
off: アプリケーションのPPRナビゲーションを無効にします。
onWithForcePPR: コマンド・コンポーネントのアクションでナビゲーションが生じる場合、コンポーネントのpartialSubmitがtrueに設定されているかのように、アクションは常にPPRを使用して提供されます。partialSubmitの詳細は、5.1.1項「イベントおよび部分ページ・レンダリング」を参照してください。コンポーネントですでにpartialSubmitがtrueに設定されている場合、フレームワークは何も実行しません。partialSubmitがtrueに設定されていない場合、ドキュメント全体がリフレッシュされ、古いページのリフレッシュ動作が保持されます。アクション・コンポーネントにナビゲーションが含まれない場合も、ドキュメント全体がリフレッシュされます。
oracle.adf.view.rich.libraryPartitioning.ENABLEDパラメータを使用して、JavaScriptのパーティション化の有効/無効を切り替えます。デフォルトでは、値はtrue(有効)です。JavaScriptのパーティション化を使用すると、ページのクライアント・コンポーネントによって必要とされるJavaScriptのみをダウンロードできます。
有効な値は次のとおりです。
true: JavaScriptのパーティション化が有効にされています(デフォルト)。
false: JavaScriptのパーティション化が無効にされています。
JavaScriptのパーティション化の使用および構成の詳細は、A.9項「JavaScriptライブラリのパーティション化の使用」を参照してください。
アプリケーションでフレームバスティングを使用するには、org.apache.myfaces.trinidad.security.FRAME_BUSTINGコンテキスト・パラメータを使用します。フレームバスティングは、悪意のあるWebサイトが別のドメインのページをフレームに引き出して偽のページで覆い隠し、元のページの一部のみが表示されるようにしたり、クリックジャックされたページ(ボタンなど)が表示されるようにするクリックジャックを防ぐ方法です。ユーザーがボタンをクリックすると、実際はクリックジャックされたページでボタンをクリックしているため、予期しない結果になります。
たとえば、DomainAに存在するWebベースの電子メール・アプリケーションに対して、IFrameを使用してDomainAの電子メール・アプリケーションのページを指すページを作成してDomainBのWebサイトでページをクリックジャックするとします。2つのページを組み合せて、DomainBから引き出されたページがIFrameでページの大部分を占めるようにして、アカウントのすべての電子メールを削除するボタンのみが表示されるようにします。実際に電子メール・アプリケーション内で操作していることを知らないユーザーがボタンをクリックすると、意図せずにすべての電子メールが削除されることになります。
フレームバスティングは次のJavaScriptを使用して、アプリケーションのページがフレーム内で実行されるのをブロックし、クリックジャックを防ぎます。
top.location.href = location.href;
パラメータをalwaysに設定して、アプリケーションがフレームバスティングを使用するように構成すると、フレームでページの実行が試行されるたびに、ユーザーにはページがリダイレクトされているというアラートが表示され、JavaScriptコードが実行されてページが最上位と定義されるため、ページのフレーム内での実行が却下されます。
アプリケーションでフレームを使用する必要がある場合は、パラメータの値をdifferentOriginに設定できます。この設定では、フレームの派生元が親ページと同じである場合のみ、フレームバスティングが実行されます。これがデフォルト設定です。
|
注意: ページの起点は、ドメイン名、アプリケーション・レイヤー・プロトコル、ほとんどのブラウザでスクリプトを実行するHTMLドキュメントのTCPポートを使用して定義されます。これらすべての値が厳密に同じ場合のみ、ページは同じドメインから引き出されていると見なされます。 |
たとえば、DomainApage2ページを含むフレームを使用するアプリケーションにDomainApage1という名前のページがあるとします。外部のDomainBpage1がDomainApage1ページのクリックジャックを試行するとします。結果は次のようなウィンドウ階層になります。
DomainBpage1
DomainApage1
DomainApage2
アプリケーションでdifferentOriginにフレームバスティングが設定されていれば、フレームワークは親ウィンドウ階層をたどって、任意の祖先ウィンドウが別のドメインから引き出されているかどうかを判断できます。DoaminBpage1は別のドメインから引き出されているため、DomainApage1ページに対してフレームバスティングJavaScriptコードが実行され、トップレベル・ウィンドウが表示されます。DomainApage2は同じドメインから引き出されているため、DomainApage1はフレーム内での実行が許可されます。
有効な値は次のとおりです。
always: フレームでの実行が試行されると常にエラーが表示されリダイレクトします。
differentOrigin: 別のドメインから派生したページでフレームの実行が試行される場合のみ、エラーが表示されリダイレクトします(デフォルト)。
never: 任意の引き出し元ドメインの任意のフレームでページを実行できます。
|
注意: 次のコンテキスト・パラメータのいずれかを
|
oracle.adf.view.rich.versionString.HIDDENパラメータを使用し、バージョン情報をページのHTML上に表示するかどうかを決めます。パラメータがfalseに設定されると、ADF FacesページのHTMLには、ADF Facesのバージョン、および例A-2に示すページの作成に使用される他のコンポーネントの情報が含まれます。
例A-2 HTMLにおけるバージョン情報
</body><!--Created by Oracle ADF (ADF Faces API - 11.1.1.4.0/ADF Faces Implementation - 11.1.1.4.0, RCF-revision: 39851 (branch: faces-1003-11.1.1.4.0, plugins: 1.2.3), Trinidad-revision: 1051544 (branch: 1.2.12.3-branch, plugins: 1.2.10), build: adf-faces-rt_101221_0830, libNum: 0355 powered by JavaServer Faces API 1.2 Sun Sep 26 03:21:43 EDT 2010 (1.2)), accessibility (mode:null, contrast:standard, size:medium), skin:customSkin.desktop (CustomSkin)--></html>
新しいアプリケーションを作成すると、パラメータはtrueに設定されます。これは本番環境においてもtrueに設定します。情報のデバッグの際は、このバージョン情報を表示するため、パラメータをfalseに設定します。
|
注意: 本番環境においては、セキュリティ問題を回避するため、このパラメータを |
プログラムでaf:outputTextまたはaf:outputFormattedコンポーネントを部分ターゲットとして追加する場合(addPartialTarget()の呼出し)、oracle.adf.view.rich.SUPPRESS_IDSコンテキスト・パラメータをautoに設定します。
デフォルトでは、このパラメータはexplicitに設定されているため、次のいずれかがtrueの場合を除き、自動生成コンポーネントIDおよび明示的に設定されるコンポーネントIDの両方を抑制することで、コンテンツ・サイズが縮小されます。
コンポーネントのpartialTriggers属性が設定されている。
clientComponent属性がtrueに設定されている。
addPartialTarget()を呼び出す場合、partialTriggers属性は設定されず、部分ページ・レンダーは成功しません。パラメータをautoに設定すると、このようなコンポーネントの自動生成コンポーネントIDのみを抑制できます。
ADF Facesキャッシング・フィルタ(ACF)は、イメージ、スタイルシート、.pdfや.zipファイルといったドキュメントなどの静的アプリケーション・オブジェクトのキャッシング(または圧縮、あるいはその両方)を有効にすることで、Webアプリケーションのパフォーマンスを上げる場合に使用可能なJava EEサーブレット・フィルタです。これらのオブジェクトは、Oracle Web CacheやOracle Traffic Directorなどの外部Webキャッシュまたはブラウザ・キャッシュでキャッシュされます。コンテンツのキャッシュ可能性は、主に、Webキャッシュ管理者が定義するURLベースのルールで決まります。ACFを使用する場合、ADFアプリケーション管理者または作成者は、adf-config.xmlファイルにキャッシング・ルールを直接定義できます。キャッシング・ルールの定義の詳細は、A.4.2項「ADF Facesキャッシング・フィルタのキャッシング・ルールの定義」を参照してください。
ADF Facesタグ・ライブラリJARには、.js、.css、イメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれます。これらの固定ルールは、adf-settings.xmlファイルで定義されるため、アプリケーションのデプロイ時やデプロイ後に変更することはできません。ルールが競合する場合、アプリケーション開発者がadf-config.xmlで定義するキャッシング・ルールが優先されます。adf-settings.xmlでの設定の詳細は、A.5.2項「adf-settings.xmlの要素について」を参照してください。
Webキャッシュを介したWebアプリケーションへのすべてのトラフィックをルーティングするには、Webキャッシュ管理者がOracle Web CacheおよびOracle Traffic Directorを構成する必要があります。Oracle Web CacheまたはOracle Traffic Directorをインストールしていない場合、<agent-caching>子要素がtrueに設定されていれば、adf-config.xmlに定義されたキャッシング・ルールがブラウザのキャッシュに適用されます。URLリクエスト・パス内になるようにACFを構成するには、web.xmlファイルで次のサーブレット・フィルタ定義を追加します。
ACFフィルタ・クラス: adf-config.xmlで定義したルールに一致するURLを実行するクラスを指定します。
ACFフィルタ・マッピング: adf-config.xmlで定義したキャッシング・ルールに一致するURLパターンを定義します。
例A-3に、ACFサーブレット定義のサンプルを示します。
例A-3 ACFサーブレット定義
<!- Servlet Filter definition ->x <filter> <filter-name>ACF</filter-name> <filter-class>oracle.adf.view.rich.webapp.AdfFacesCachingFilter</filter-class> </filter> <!- servlet filter mapping definition -> <filter-mapping> <filter-name>ACF</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
|
注意: ACFサーブレット・フィルタは、アプリケーションに定義されたフィルタ・チェーン内の最初のチェーンにします。 |
リンクをレンダリングするADF Facesコマンド・コンポーネントのコンテキスト・メニューを表示するには、oracle.adf.view.rich.ACTION_LINK_BROWSER_CONTEXT_SUPPRESSIONパラメータを使用してエンド・ユーザーのブラウザの有効または無効を切り替えます。ポップアップ・メニューは、コマンド・コンポーネントで指定されたリンクに対して、異なるアクション(たとえば、新しいウィンドウでリンクを開くなど)を起動するメニュー・オプションを表示することができます。
デフォルトでは、このパラメータはyesに設定されているため、ADF Facesコマンド・コンポーネントのコンテキスト・メニューのレンダリングが抑制されます。パラメータをnoに設定すると、この抑制を無効にして、ネイティブ・ブラウザ・コンテキスト・メニューを表示できます。この機能を構成できるADF Facesコマンド・コンポーネントの詳細は、第18章「コマンド・リンクのブラウザのコンテキスト・メニューの構成」を参照してください。
ADF Facesアプリケーションを、Microsoft Internet Explorerの互換モードで実行すると、予測できない動作を引き起こす可能性があります。デフォルトでは、ユーザーがADF Facesアプリケーションにアクセスし、Internet Explorerブラウザが互換性モードに設定されている場合、ADF Facesはユーザーにこのモードの無効化を求めるアラートを表示します。
oracle.adf.view.rich.HIDE_UNSUPPORTED_BROWSER_ALERTSコンテキスト・パラメータをIECompatibilityModesに設定して、ユーザーにこのメッセージを非表示にします。
|
注意: このメッセージが非表示見になっていても、 |
リクエストがサーバーに送信されると、セッション・タイムアウト値がページに書き込まれ、セッション・タイムアウト警告の間隔がコンテキスト・パラメータoracle.adf.view.rich.sessionHandling.WARNING_BEFORE_TIMEOUTで定義されます。ユーザーは、警告ダイアログでセッションを延長することができ、セッションの期限が切れてページがリフレッシュされるときに通知が送信されます。アプリケーションのセキュリティ構成に応じて、セッションの期限が切れると、ユーザーはページのログにリダイレクトされます。
警告ダイアログが表示されてからセッション・タイムアウトまでの秒数を設定するには、oracle.adf.view.rich.sessionHandling.WARNING_BEFORE_TIMEOUTコンテキスト・パラメータを使用します。WARNING_BEFORE_TIMEOUTの値が120秒未満の場合、クライアントの状態保存がページに使用されるか、セッションが無効になっている場合、機能は無効になります。セッション・タイムアウト値は、セッションから直接取得されます。
例A-4に、セッションがタイムアウトするまで警告ダイアログが120秒表示される場合の構成を示します。
例A-4 セッション・タイムアウト警告の構成
<context-param>
<param-name>oracle.adf.view.rich.sessionHandling.WARNING_BEFORE_
TIMEOUT</param-name>
<param-value>120</param-value>
</context-param>
このパラメータのデフォルト値は120秒です。セッション・タイムアウトの設定が短すぎる場合にユーザーへの通知が頻繁に行われないようにするには、実際のWARNING_BEFORE_TIMEOUTの値を動的に決定します。この場合、セッション・タイムアウトは、2分を超えるように設定する必要があります。そうしなければ、機能は無効になります。
JSPページの処理中にHTTPストリーミング・リクエストでのJSPタグ実行の有効または無効を切り替えるには、oracle.adf.view.rich.tag.SKIP_EXECUTIONパラメータを使用します。Faceletの処理は含まれません。
このパラメータは、デフォルトでstreamingに設定されています。JSPタグ実行は、ストリーミング・リクエスト時はスキップされます。タグ実行がストリーミング・リクエストで必要な場合、リクエストごとにJSPタグを実行するには、パラメータをoffに設定します。
図A-1に示すように、ページがロードしているときにデフォルトで表示されるスプラッシュ画面の有効または無効を切り替えるには、oracle.adf.view.rich.SPLASH_SCREENパラメータを使用します。
このパラメータは、デフォルトでonに設定されています。スプラッシュ画面が表示されないようにするには、offに設定します。
グラフ・コンポーネントとゲージ・コンポーネントのデフォルトの出力形式をHTML5に変更するには、oracle.adf.view.rich.dvt.DEFAULT_IMAGE_FORMATパラメータを追加します。
<context-param> <param-name>oracle.adf.view.rich.dvt.DEFAULT_IMAGE_FORMAT</param-name> <param-value>HTML5</param-value> </context-param>
デフォルトでは、このパラメータはありません。有効値はHTML5およびFLASHです。
特定のレイアウト・コンポーネントや表がどのように拡大処理されるかをグローバルにコントロールする場合、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータを追加します。
特定のレイアウト・コンポーネント(af:decorativeBox, af:panelAccordion, af:panelDashboard, af:panelStretchLayout, af:panelSplitter, af:panelTabbed)が拡大できるかどうかは、dimensionsFrom属性の値に基づきます。これらのコンポーネントのデフォルトの設定はparentで、これはコンポーネンントのサイズが次の順序で決まることを意味します。
inlineStyle属性から。
inlineStyleに値がない場合は、サイズは親コンテナにより決まります(すなわち、コンポーネントは拡大します)。
親コンテナが構成されていないか、その子を拡大できない場合は、サイズがスキンによって決定されます。
しかし、コンポーネントが常にautoをdimensionsFrom属性の値として使用することをユーザーが望む場合は(すなわち、コンポーネントはその親コンポーネントが子の拡大を可能としている場合は拡大し、そうでない場合は、コンポーネントのサイズはその子コンポーネントに基づく)、ユーザーはoracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータをautoに設定できます。ユーザーはまた個々のコンポーネントにdimensionsFrom属性を使用して、この設定を上書きすることができます。
表でも同様に、autoHeightRows属性が表が拡大するかどうかを決めます。デフォルトでは-1に設定されており、これは、表のサイズはフェッチされた行の数に基づくことを意味します。しかし、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータがautoに設定されている場合、表は親コンポーネントが拡大を可能としている場合は拡大し、そうでない場合は、表のfetchSize属性で決まる行の数になります。
デフォルトでは、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータはlegacyに設定されており、これは、コンポーネントはその標準のデフォルトの値を使用することを意味します。
親コンポーネントが拡大を可能にしている時にレイアウト・コンポーネントと表の両方が常に拡大することを望む場合は、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータをautoに設定します。
アプリケーション全体に関わるその他のオプションのコンテキスト・パラメータは次のとおりです。
javax.faces.CONFIG_FILES: JSFアプリケーション構成リソース・ファイルへのパスを指定します。次のコードに示すとおり、値には、アプリケーション・コンテキストの相対パスのカンマ区切りリストを使用します。アプリケーションで複数のJSF構成ファイルを使用する場合、このパラメータを設定します。
<context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value> /WEB-INF/faces-config1.xml,/WEB-INF/faces-config2.xml </param-value> </context-param>
javax.faces.DEFAULT_SUFFIX: JSFコンポーネントを含むJSPページのファイル拡張子(接尾辞)を指定します。デフォルト値は、.jspです。
|
注意: JSFサーブレットに対する接頭辞マッピング( |
javax.faces.LIFECYCLE_ID: javax.faces.lifecycle.LifecycleFactory.DEFAULT_LIFECYCLE定数によるデフォルト設定以外のライフサイクル識別子を指定します。
|
注意:
|
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION: 実行時の変更の表示に、JSPファイルとCSSファイルで再起動が必要かどうかを指定します。デフォルトではfalseに設定されています。サーバーを再起動せずに変更を表示できるようにする場合は、trueに設定します。
JSF構成ファイルには、JSFアプリケーションのリソース(カスタム・バリデータ、マネージドBeanなど)を登録し、ページ間のナビゲーション・ルールをすべて定義します。JSF構成ファイル名は、アプリケーションで任意の名前にできますが、通常、faces-config.xmlファイルです。小規模なアプリケーションには、通常、1つのfaces-config.xmlファイルがあります。
アプリケーションでADF Facesコンポーネントを使用する場合、JDeveloperでは、必要な構成要素がfaces-config.xmlに自動で追加されます。faces-config.xmlファイルの詳細は、Sun社のWebサイト(http://java.sun.com)の「Java EE 5 tutorial」を参照してください。
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、空のfaces-config.xmlファイルが/WEB-INFディレクトリに作成されます。JSFテクノロジを使用するアプリケーション・テンプレート(Java EE Webアプリケーション・テンプレートなど)を基に、新規アプリケーション・ワークスペースを作成した場合も、空のfaces-config.xmlファイルが自動的に追加されます。詳細は、2.2項「アプリケーション・ワークスペースの作成」を参照してください。
アプリケーションでADF Facesコンポーネントを使用する場合、ADFデフォルト・レンダー・キットIDをoracle.adf.richに設定する必要があります。JSFページへのADF Facesコンポーネントの最初の挿入時、またはFusionテンプレートを使用して作成されたアプリケーション・ワークスペースへの最初のJSFページの追加時、例A-5に示すとおり、ADFコンポーネントのデフォルト・レンダー・キットがfaces-config.xmlファイルにJDeveloperで自動的に挿入されます。
例A-5 faces-config.xmlでのADFデフォルト・レンダー・キット構成
<?xml version="1.0" encoding="windows-1252"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee">
<application>
<default-render-kit-id>oracle.adf.rich</default-render-kit-id>
</application>
</faces-config>
通常、次のものをtrinidad-config.xmlファイルで構成します。
メッセージ・バンドル、サポートされているロケールなどのアプリケーション・リソース
ページ間のナビゲーション・ルール
カスタム・バリデータおよびコンバータ
データを保持および処理、UIイベントの処理およびビジネス・ロジックの実行用マネージドBean
|
注意: アプリケーションでADFコントローラを使用する場合、これらのアイテムは |
JDeveloperでは、宣言的概要エディタを使用してfaces-config.xmlファイルを変更できます。JSF構成要素に精通している場合は、XMLエディタを使用してコードを直接編集できます。
faces-config.xmlの編集手順:
アプリケーション・ナビゲータで、faces-config.xmlをダブルクリックし、ファイルを開きます。
JDeveloperでは、faces-config.xmlはデフォルトでは概要エディタで開きます。これは、エディタ・ウィンドウの下部の「概要」タブがアクティブなことで示されます。
概要エディタを使用してマネージドBeanやバリデータなどを宣言的に追加すると、JDeveloperでfaces-config.xmlファイルが自動的に更新されます。
faces-config.xmlのXMLコードを直接編集するには、エディタ・ウィンドウの下部の「ソース」をクリックします。
XMLエディタで要素を編集すると、JDeveloperで変更が概要エディタに自動で反映されます。
|
ヒント: JSFでは、1つの |
adf-config.xmlファイルは、セキュリティ、キャッシュ、変更永続性などのアプリケーション全体の機能の構成に使用されます。他のOracleコンポーネントもこのファイルでプロパティを構成します。
アプリケーションの構成を行う前に、まず、adf-config.xmlファイルを作成する必要があります。その後、アプリケーションで使用するアプリケーション全体のADF機能の構成を追加できます。
adf-config.xmlの作成と編集手順:
プロジェクト用のMETA-INFディレクトリの作成がまだの場合は、これを作成します。
META-INFディレクトリを右クリックし、「新規」を選択します。
「新規ギャラリ」で「一般」を開き、「XML」→「XMLドキュメント」の順に選択し、「OK」をクリックします。
|
ヒント: 「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。 |
ファイル名にadf-config.xmlと入力し、META-INFディレクトリに保存します。
ソース・エディタで、生成されたコードを例A-6のコードに置き換えます。
これで、使用する機能の構成に必要な要素を追加できます。
ADF Facesキャッシング・フィルタ(ACF)のキャッシング・ルールは、Webアプリケーションの.adf/META-INFディレクトリにあるadf-config.xmlファイルで定義されます。これらのURL一致ルールに対してリクエスト・パス内になるようにACFを構成する必要があります。ACFサーブレット・フィルタ定義の詳細は、A.2.3.19項「ADF Facesキャッシング・フィルタ」を参照してください。
1つ以上のキャッシング・ルールの単一ルート要素は、<caching-rules>です。これは、ネームスペースhttp://xmlns.oracle.com/adf/faces/configの<adf-faces-config>要素の子として構成されます。
<caching-rule>要素は各キャッシング・ルールを定義し、それぞれのルールは構成ファイルのリスト順に評価されます。例A-7に、adf-config.xmlでキャッシング・ルールを定義する構文を示します。
例A-7 ACFキャッシング・ルールの構文
<adf-config xmlns="http://xmlns.oracle.com/adf/config">
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<caching-rules xmlns="http://xmlns.oracle.com/adf/faces/rich/acf">
<caching-rule id="cache-rule1">
<cache>true|false</cache>
<duration>3600</duration>
<agent-caching>true|false</agent-caching>
<agent-duration>4800</agent-duration>
<compress>true|false</compress>
<cache-key-pattern>....</cache-key-pattern>
<search-key>
<key>key1</key>
<key>key2</key>
</search-key>
<varyBy>
<vary-element>
<vary-name><cookieName>|<headerName></vary-name>
<vary-type>cookie|header</vary-type>
</vary-element>
</varyBy>
</caching-rule>
</caching-rules>
</adf-faces-config>
</adf-config>
各キャッシング・ルールは、<caching-rule>要素で定義されます。オプションのid属性を定義して、ルールの場所をサポートできます。表A-1は、アプリケーションのオブジェクトのキャッシュまたは圧縮に関するパラメータの定義に使用される<caching-rule>子要素について説明しています。
表A-1 AFCキャッシング・ルールの要素と属性
| ルール要素の子 | 属性の説明と値 |
|---|---|
|
|
オブジェクトをWebキャッシュにキャッシュする必要があるかどうかを指定します。値が |
|
|
オブジェクトをWebキャッシュにキャッシュする期間を秒数で定義します。デフォルトは |
|
|
Webキャッシュがない場合にブラウザ・キャッシュを使用するには、値 |
|
|
オブジェクトをブラウザ・キャッシュにキャッシュする期間を秒数で定義します。デフォルトは |
|
|
Webキャッシュにキャッシュされたオブジェクトを圧縮する必要があるかどうかを指定します。デフォルト値は |
|
|
ルールに一致するURLを決定します。ファイル拡張子またはリクエストURLのパス接頭辞には、 |
|
|
キャッシュされたオブジェクトにタグ付けされた検索キーを定義します。各 |
|
|
Webキャッシュにキャッシュされたオブジェクトのバージョニングに使用されます。1つの それぞれの
Webキャッシュは、リクエスト・パラメータを自動でバージョニングします。複数のバージョンのオブジェクトが、リクエスト・パラメータに基づいてWebキャッシュに格納されます。 |
アプリケーションは、デフォルトでコンポーネントごとに指定される出力形式を使用します。たとえば、ADFデータ視覚化コンポーネントを使用するアプリケーションは、アニメーションと対話効果をWebブラウザに表示するFlash出力形式を指定します。コンポーネントの出力形式がFlashで、ユーザーのプラットフォームがFlash Playerに対応していない場合(AppleのiOSオペレーティング・システムなど)、出力形式は、最適で利用可能な代替形式に自動でダウングレードされます。
アプリケーション全体でのFlashコンテンツの使用を構成にするには、adf-config.xmlでflash-player-usageコンテキスト・パラメータを設定します。有効な設定は次のとおりです。
downgrade: 出力形式がFlashであっても、Flash Playerを使用できない場合は、最適で利用可能な代替形式にダウングレードするように指定します。Flash Playerのダウンロードは求められません。
disable: アプリケーションでのFlashの使用を無効にするように指定します。Flash Playerをクライアントで使用できるかどうかに関係なく、すべてのコンポーネントは、Flash以外のバージョンでレンダリングされます。
例A-8に、adf-config.xmlでFlashをアプリケーション全体で無効にするための構文を示します。
例A-8 adf-config.xmlで無効化されるFlash
<adf-config xmlns="http://xmlns.oracle.com/adf/config">
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<flash-player-usage>disabled</flash-player-usage>
</adf-faces-config></adf-config>
コンテキスト・パラメータは、EL式の値もサポートします。このため、アプリケーションの各箇所や様々なユーザーに対して、そのプリファレンスに基づきFlashの有効または無効を選択して切り替えることができます。
|
注意: 以前は、データ視覚化コンポーネント |
コンテンツ配信ネットワーク(CDN)では、ネットワークでのコンテンツへのアクセスがさらに効率的になることで、Webアプリケーションのパフォーマンスが向上します。アプリケーションでは、様々なCDN構成を使用してユーザー・エクスペリエンスを最適化できます。CDNを介してすべてのリクエストをルーティングする構成がよく利用されるようになっています。CDNは、クライアントとアプリケーションとの間のプロキシとして機能します。CDN固有の構成ツールを使用して、キャッシングや圧縮のルールを指定できます。
また、CDNからルーティングされるリクエストを制限する方法もあります。たとえば、予備リソース(イメージ、JavaScriptライブラリ、スタイルシートなど)のリクエストのみをCDNに誘導し、アプリケーション生成HTMLコンテンツのリクエストを直接処理できます。この場合、相対リソースURIを、CDNで処理されるホストを指し示す絶対URIに変換する必要があります。
たとえば、アプリケーション定義のイメージが、imagesというローカル・ディレクトリに保存されるとします。イメージを参照するコードは、例A-9のようになります。
例A-10に示すように、イメージをCDNから取得するには、イメージ・ソースの絶対URIを明示的に指定する方法があります。
例A-10 絶対URIを使用したCDNからのイメージ参照
<af:image source="http://mycdn.com/images/logo.png"
shortDesc="My Company Logo"
id="i1"/>
この方法では、アプリケーションの多くの場所(すべてのイメージ参照の可能性がある)を更新する必要があるため、ページ間でCDNベースURIが重複してしまうマイナス面があります。これにより、CDN使用の有効/無効が切り替えられたり、CDNから別の極めて困難なCDNに切り替えられたりする可能性があります。
あるいは、例A-11に示すように、リソース関連属性をELでバインドする方法もあります。
例A-11 CDNベースURIへのELバインディング
<af:image source="#{preferences.baseUri}/logo.png"
shortDesc="My Company Logo"
id="i1"/>
この方法では、CDNベースURIを1箇所(マネージドBeanなど)で指定できます。ただし、コンテンツ全体で正しいEL式を使用することは、アプリケーション開発者の負担になります。
ADF Facesでは、アプリケーション全体で(直接またはEL式を介して)CDNの場所の参照を繰り返すのではなく、リソースURIを変更する一元管理メカニズムが用意されています。このメカニズムを使用すると、1つ以上の接頭辞(ベース・リソースURI)をリソースに指定できます。これらのベース・リソースURIは、ネームスペースhttp://xmlns.oracle.com/adf/rewrite/configの下にある、アプリケーションのadf-config.xmlファイルで定義されます。
たとえば、例A-12では、イメージ・ディレクトリのすべてのpngイメージが、http://mycdn.com接頭辞を含めて書き換えられるように指定されています。
例A-12 adf-config.xmlでのCDN接頭辞の指定
<adf-uri-rewrite-config xmlns="http://xmlns.oracle.com/adf/rewrite/config">
<resource-uris>
<base-resource-uri uri="http://mycdn.com/">
<match-pattern>^/.*/images/.*\.png$</match-pattern>
</base-resource-uri>
</resource-uris>
</adf-uri-rewrite-config>
<match-pattern>要素で指定された正規表現(^/.*/images/.*\.png$)は、アプリケーションでレンダリングされるすべてのリソースURIに対してテストされます。一致するURIは、<base-resource-uri>要素のURI属性で指定された接頭辞を含めるように変換されます。
この解決方法では、アプリケーション定義のリソースURIのみでなく、ADF Faces自体で使用されるURIの変更にも使用できるというメリットがあります。このタスクを簡略化するために、ADF Facesでは、正規表現のかわりに<match-alias>要素で使用できるエイリアスの小規模セットを公開します。
たとえば、例A-13の構成では、http://mycdn.com/接頭辞を、ADF Facesコンポーネントで定義されるすべてのイメージに適用しています。
例A-13 接頭辞のリソースへの適用
<adf-uri-rewrite-config xmlns="http://xmlns.oracle.com/adf/rewrite/config">
<resource-uris>
<base-resource-uri uri="http://mycdn.com/">
<match-alias>af:images</match-alias>
</base-resource-uri>
</resource-uris>
</adf-uri-rewrite-config>
<match-pattern>要素で指定した正規表現とは異なり、<match-alias>で使用されるエイリアスは、アプリケーション定義のリソースと一致しません。そのため、たとえば、前述の構成のaf:imagesエイリアスの場合、ADF Facesコンポーネントで定義されるイメージ(ADF Facesに付属のデフォルトの背景イメージやアイコン)に接頭辞が付けられます。アプリケーションに明示的にバンドルされるイメージに接頭辞は付きません。
af:imagesエイリアスの他に、ADF Facesスキン(スタイルシート)、JavaScriptライブラリおよびリソース・ドキュメントを対象とするエイリアスも提供されます。
CDNのURIを設定する手順:
adf-config.xmlファイルを作成するか開きます(詳細は、A.4.1項「adf-config.xmlでのADF Facesの構成方法」を参照)。
表A-2に示す要素を使用して、CDNの置換えURIを定義する書換えルールを作成します。
|
注意: すべての属性値は、ELにバインドされます。ただし、ELにバインドされた属性の評価は一度のみです(解析時)。 |
表A-2 CDN URI書換え要素
| 要素 | 定義 |
|---|---|
|
|
この |
|
|
指定リソースのパスを書き換えるルールを定義します。 |
|
|
書き換えられたパスのベースURIを定義します。
|
|
|
レンダリングされるリソースURIに対してテストされる正規表現。一致が見つかった場合、リソースURIの先頭には、 実行時のオーバーヘッドを最小限に抑えるために、リソースURIの書換えの結果がキャッシュされることに注意してください。過度のキャッシュを防ぐには、 |
|
|
ADF Facesで提供されるリソースのいずれかに一致するエイリアスを定義します。リソースは、次のいずれかになります。
各 |
一致要素に指定された値は、ExteralContext.encodeResourceURL()を通過するすべてのURIと比較されます。URIが一致した場合、囲んでいる<base-resource-uri>要素で指定された接頭辞が適用されます。
例A-14に、CDNを使用するように構成されるアプリケーションを示します。
例A-14 CDN URI要素
<adf-uri-rewrite-config xmlns="http://xmlns.oracle.com/adf/rewrite/config">
<resource-uris>
<base-resource-uri uri="http://mycdn.com/"
secure-uri="https"
output-context-path="remove">
<match-pattern>^/.*/images/.*\.png$</match-pattern>
<match-alias>af:documents</match-alias>
<match-alias>af:coreScripts</match-alias>
</base-resource-uri>
</resource-uris>
</adf-uri-rewrite-config>
af:skinsエイリアスを使用して、CDNを指し示すようにスキン・スタイルシートを書き換えることができますが(CDNはアプリケーション・サーバーにリクエストをプロキシするように構成される)、アプリケーションがクラスタまたはロードバランスされた環境(あるいはその両方)で実行している場合、問題が生じることがあります。
スキン・スタイルシートは、包含ページ・コンテンツをレンダリングしたサーバーに生成されて格納されます。CDNを介してスタイルシート・リクエストをルーティングすることで、サーバー・アフィニティが失われる可能性があります(たとえば、CDNが別のドメインで機能する場合、セッションCookieが失われます)。その結果、スタイルシート・リクエストは、リクエストしたスタイルシートをまだ生成していないサーバーにルーティングされます。このような場合、スタイルシート・リクエストは正常に完了しません。
ロードバランス環境またはクラスタ化環境(あるいはその両方)で起こる可能性のある失敗を回避するには、Cookieまたはセッション・アフィニティが失われる場合、スキン・スタイルシートURIを書き換えないでください。
af:coreScriptsエイリアスを使用して、ADFの「コア」JavaScriptライブラリ(すべてのADFページにあるJavaScript)をCDNに書き換えることができます。また、<match-pattern>の正規表現を使用して、任意(アプリケーション定義など)のJavaScriptライブラリURIを書き換えることができます。ただし、JavaScriptライブラリがページに動的に導入されている場合(部分ページレンダリングの結果など)、いくつかの起源ポリシー制限が適用されます。その結果、クロスオリジン・ホストに書き換えられたJavaScriptライブラリURIはロードに失敗します。
JavaScriptライブラリURIの書換えを、af:coreScriptsで扱われるライブラリに制限し、アプリケーション提供ライブラリが既知の場合も、初期ページ・レンダーの一部(つまり、ライブラリはPPRリクエストの一部として導入されていない)として含まれるように制限する必要があります。
adf-settings.xmlファイルには、ADF Facesヘルプ・プロバイダ、キャッシュ/圧縮のルールなどのプロジェクトレベルおよびライブラリレベルの設定が含まれます。adf-settings.xmlファイルの構成設定は固定で、アプリケーションのデプロイ時やデプロイ後に変更できません。1つのアプリケーションには複数のadf-settings.xmlファイルが存在可能ですが、adf-settings.xmlファイルのユーザーは、その構成に関するコンテンツをマージする責任を持ちます。
アプリケーションの構成を行う前に、まず、adf-settings.xmlファイルを作成する必要があります。その後、アプリケーションで使用するプロジェクトの機能の構成を追加できます。このファイルでの構成の詳細は、A.5.2項「adf-settings.xmlの要素について」を参照してください。
adf-settings.xmlの作成と編集手順:
adf-settings.xmlファイルはMETA-INFディレクトリに存在する必要があります。ディレクトリを作成する場所は、adf-settings.xmlファイルを使用するプロジェクトのデプロイ時の計画によって異なります。
プロジェクトをアプリケーションのEARファイルでデプロイする場合、META-INFディレクトリを/application_name/.adfディレクトリに作成します。
プロジェクトにadf-settings.xmlファイルへの依存性があり、アプリケーションと別にデプロイされる可能性がある場合(たとえば、ADFライブラリでデプロイされるバインドされたタスク・フローなど)、META-INFディレクトリをビュー・プロジェクトの/srcディレクトリに作成します。
|
ヒント: アプリケーションでOracle ADF Modelを使用している場合、 |
JDeveloperで、「ファイル」→「新規」の順に選択します。
「新規ギャラリ」で「一般」を開き、「XML」→「XMLドキュメント」の順に選択し、「OK」をクリックします。
|
ヒント: 「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。 |
ソース・エディタで汎用コードを例A-15に示すコードに置き換えます。Webアプリケーション・ルートに対する正しい設定を使用します。
これで、使用する機能の構成に必要な要素を追加できます。詳細は、A.5.2項「adf-settings.xmlの要素について」を参照してください。
手順1で作成したMETA-INFディレクトリに、ファイルをadf-settings.xmlとして保存します。
adf-settings.xmlファイルでは次の構成要素がサポートされています。
次の要素を使用して、ヘルプ・システムで使用されるヘルプ・プロバイダを登録します。
<adf-faces-config>: ADF Faces固有の構成をグループにまとめる親要素。
<prefix-characters>: ヘルプ・プロバイダで、特定の接頭辞で始まるヘルプ・トピックIDにのみヘルプ・トピックを提供する場合、その接頭辞を指定します。接頭辞を使用しない場合は、省略できます。
<help-provider-class>: ヘルプ・プロバイダ・クラス。
<custom-property>および<property-value>: ヘルプ・プロバイダ・クラスで受け入れるパラメータを定義するプロパティ要素。
例A-16に、登録されたヘルプ・プロバイダの例を示します。このケースでは、アプリケーションのヘルプ・プロバイダは1つのみのため、接頭辞を含める必要がありません。
例A-16 ヘルプ・プロバイダの登録
<adf-settings xmlns="http://xmlns.oracle.com/adf/settings">
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/settings">
<help-provider prefix="MYAPP">
<help-provider-class>
oracle.adfdemo.view.webapp.MyHelpProvider
</help-provider-class>
<property>
<property-name>myCustomProperty</property-name>
<value>someValue</value>
</property>
</help-provider>
</adf-faces-config>
</adf-settings>
アプリケーションに固有のライブラリとJARには、ファイルのキャッシュまたは圧縮(あるいはその両方)が必要な各種リソースが含まれています。ライブラリやJARが複数ある場合、アプリケーションには、一致するURLに基づいて様々なキャッシング・ルールを含めるadf-setting.xmlファイルを1つ以上入れることができます。キャッシング・ルールは、実行時に順序付リストにマージされます。リソースのリクエストが複数のキャッシング・ルールと一致した場合、リストの最初の該当ルールが優先されます。
ADF Faces JARには、.js、.css、イメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれます。これらの固定ルールは、adf-settings.xmlファイルで定義されるため、アプリケーションのデプロイ時やデプロイ後に変更することはできません。アプリケーション開発者は、adf-settings.xmlで定義されるルールよりも優先されるadf-config.xmlファイルでアプリケーションのキャッシング・ルールを定義できます。例A-17に、ADF Faces JARのadf-settings.xmlファイルを示します。
例A-17 ADF Facesのadf-settings.xmlファイル
<adf-settings>
<adf-faces-settings>
<caching-rules>
<caching-rule id="cache css">
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.css</cache-key-pattern>
</caching-rule>
<caching-rule id="cache js">
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.js</cache-key-pattern>
</caching-rule>
<caching-rule id="cache png">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.png</cache-key-pattern>
</caching-rule>
<caching-rule id="cache jpg">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.jpg</cache-key-pattern>
</caching-rule>
<caching-rule id="cache jpeg">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.jpeg</cache-key-pattern>
</caching-rule>
<caching-rule id="cache gif">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.gif</cache-key-pattern>
</caching-rule>
<caching-rule id="cache html">
<compress>true</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.html</cache-key-pattern>
</caching-rule>
</caching-rules>
</adf-faces-settings>
</adf-settings>
ADF Facesコンポーネントを使用してJSFアプリケーションを作成する場合、ADF Facesの機能(スキン・ファミリ、ページ・アクセシビリティ・サポートのレベルなど)をtrinidad-config.xmlファイルで構成します。faces-config.xml同様、trinidad-config.xmlは、JSF式言語(EL)または静的値を使用して要素プロパティを定義できる単純なXML構造を持ちます。
JDeveloperで、ADF FacesコンポーネントをJSFページへ初めて追加すると、trinidad-config.xmlの基礎ファイルが/WEB-INFディレクトリに自動的に作成されます。例A-18に、trinidad-config.xmlの基礎ファイルを示します。
例A-18 JDeveloperによって作成されるtrinidad-config.xml基礎ファイル
<?xml version="1.0" encoding="windows-1252"?> <trinidad-config xmlns="http://xmlns.oracle.com/trinidad/config"> <skin-family>skyros</skin-family> <skin-version>v1</skin-version> </trinidad-config>
デフォルトでは、JDeveloperはADF Facesを使用するJSFアプリケーションのskyrosスキン・ファミリを構成します。これを、fusion-fx、simpleあるいはカスタム・スキンに変更できます。カスタム・スキンを使用する場合は、trinidad-skins.xml構成ファイルを作成し、カスタム・スキンを使用するようtrinidad-config.xmlを変更します。カスタム・スキンの作成の詳細は、第20章「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
通常、次のものをtrinidad-config.xmlファイルで構成します。
ページ・アニメーション
ページ・アクセシビリティ・サポートのレベル
タイムゾーン
拡張デバッグ出力
Oracle Help for the Web(OHW)のURL
ファイルのアップロードに使用するカスタム・ファイル・アップロード・プロセッサの登録もできます。
JDeveloperでは、XMLエディタを使用してtrinidad-config.xmlを変更できます。
trinidad-config.xmlの編集手順:
アプリケーション・ナビゲータでtrinidad-config.xmlをダブルクリックし、XMLエディタにファイルを開きます。
要素名に精通している場合は、エディタに入力します。そうでない場合は、構造ウィンドウを使用して挿入します。
構造ウィンドウで次のようにします。
前に挿入または後に挿入メニューから選択する要素を右クリックし、挿入する要素をクリックします。
構造ウィンドウで新たに挿入した要素をダブルクリックし、プロパティ・インスペクタで開きます。値を入力するか、ドロップダウン・リストが使用可能な場合はリストから選択します。
ほとんどの場合、JSF EL式(#{view.locale.language=='en' ? 'minimal' : 'skyros'}など)、あるいは静的値(たとえば、<debug-output>true</debug-output>)を入れることができます。EL式は、リクエストごとに動的に再評価され、適切なオブジェクト(Booleanオブジェクトなど)を戻す必要があります。
使用できる構成要素のリストは、A.6.2項「trinidad-config.xmlの要素について」を参照してください。
trinidad-config.xmlファイルの構成後、プログラムから、あるいはJSF EL式を使用してプロパティ値を取得できます。詳細は、A.8項「RequestContext EL暗黙オブジェクトの使用」を参照してください。
すべてのtrinidad-config.xmlファイルは、http://myfaces.apache.org/trinidad/config XMLネームスペースの<trinidad-config>要素で始まる必要があります。<trinidad-config>内の要素の順序は任意です。要素のインスタンスを複数含めることができます。
一部のADF Facesコンポーネントでは、レンダリング時にアニメーションが使用されます。たとえば、ツリーおよびツリー表でノードを展開および縮小する際、アニメーションが使用されます。次のコンポーネントでレンダリング時にアニメーションが使用されます。
ファセットを公開および非公開にする場合の表の詳細ファセット
ノードを展開および縮小する際のツリーおよびツリー表
メニュー
ポップアップ・セレクタ
ダイアログ
ノート・ウィンドウおよびメッセージの表示
使用されるアニメーションのタイプとタイミングは、アプリケーションのスキンの一部として構成されます。詳細は、第20章「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
animation-enabled要素はtrueまたはfalseに設定できます。また、trueまたはfalseに解決されるEL式を使用できます。
|
注意: アニメーションを有効にすると、パフォーマンスが影響を受けます。詳細については、Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイドの「Oracle Application Development Frameworkのパフォーマンス・チューニング」の項を参照してください。 |
A.6.1項「trinidad-config.xmlでのADF Facesの機能の構成方法」での説明のとおり、JDeveloperでは、ADF Facesを使用するJSFアプリケーションにskyrosスキン・ファミリがデフォルトで使用されます。<skin-family>の値をfusion-fx、simpleに変更することも、カスタム・スキン定義に変更することもできます。カスタム・スキンの作成および使用の詳細は、第20章「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
次のコードに示すように、スキン・ファミリ値にEL式を使用できます。
<skin-family>#{prefs.proxy.skinFamily}</skin-family>
日付を処理して表示するためのタイムゾーンと、2桁のみの年を解析するための年オフセットを設定するには、次の要素を使用します。
<time-zone>: ADF Facesは、値が設定されない場合、アプリケーションで使用されるタイムゾーンをデフォルトで使用します。必要な場合は、TimeZoneと評価されるEL式を使用できます。この値は、文字列をDateに変換する際にorg.apache.myfaces.trinidad.converter.DateTimeConverterで使用されます。
<two-digit-year-start>: この値は、グレゴリオ暦の年で指定します。org.apache.myfaces.trinidad.converter.DateTimeConverterで使用されて、文字列をDateに変換します。この要素は、値が設定されない場合、デフォルトで1950年に設定されます。必要な場合は、静的整数値またはIntegerオブジェクトと評価されるEL式を使用できます。
<debug-output>要素は、デフォルトでfalseです。<debug-output>をtrueに設定すると、ADF Facesでデバッグ出力が拡張されます。次の機能がデバッグ出力に追加されます。
自動インデント
HTMLのブロックを処理したコンポーネントを識別するコメント。
対応していない要素、1つの要素内での同じ属性の繰り返しの使用またはその他の不適切なマークアップの問題の検出。
一般的なHTMLエラー(他の<form>タグ内の<form>タグ、無効な場所に使用されている<tr>タグや<td>タグなど)の検出。
|
パフォーマンスのヒント: デバッグにより、パフォーマンスが影響を受けます。本番環境ではこのパラメータを |
<accessibility-mode>を使用して、アプリケーションでのアクセシビリティ・サポートのレベルを定義します。サポートされている値は次のとおりです。
default: 出力でアクセシビリティ機能がサポートされます。
inaccessible: 出力サイズを最適化するため、アクセシビリティ固有の構成要素は削除されます。
screenReader: アクセシビリティ固有の構成が追加されて、スクリーン・リーダーの動作が改善します。
|
注意: スクリーン・リーダー・モードは、他のユーザーにマイナスの影響を与える可能性があります。たとえば、アクセシビリティ・モードがスクリーン・リーダー・モードに設定されていると、アクセス・キーは表示されません。 |
<accessibility-profile>を使用して、アプリケーションで使用する色のコントラストやフォント・サイズを構成します。サポートされている値は次のとおりです。
high-contrast: デフォルト・コントラストではなく高コントラストを使用してアプリケーションが表示されます。
large-fonts: デフォルト・サイズのフォントではなく大きいフォントを使用してアプリケーションが表示されます。
複数の設定を使用するには、値を空白で区切ります。
ADF Facesのデフォルトのページ・レンダリング方向は、ブラウザで使用されている言語に基づきます。しかし、次のコードに示すように、Booleanオブジェクトに評価されるEL式、あるいはtrueまたはfalseを使用して<right-to-left>要素にデフォルト・ページ・レンダリング方向を明示的に設定できます。
<!-- Render the page right-to-left for Arabic -->
<!-- and left-to-right for all other languages -->
<right-to-left>
#{view.locale.language=='ar' ? 'true' : 'false'}
</right-to-left>
通貨フィールドの書式設定に使用する通貨コードを指定する場合、および数値の桁と小数点に使用する区切り記号を定義する場合、次の要素を使用します。
<currency-code>: コンバータで明示的に通貨コードが指定されていない通貨フィールドの書式設定に、org.apache.myfaces.trinidad.converter.NumberConverterクラスで使用されるデフォルトのISO 4217通貨コードを定義します。静的値またはStringオブジェクトと評価されるEL式を使用します。次に例を示します。
<!-- Set the currency code to US dollars. --> <currency-code>USD</currency-code>
<number-grouping-separator>: 数値の桁区切りに使用される文字(カンマなど)を定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。静的値またはCharacterオブジェクトと評価されるEL式を使用できます。設定されている場合、この値が、解析および書式設定時にorg.apache.myfaces.trinidad.converter.NumberConverterクラスで使用されます。
たとえば、アプリケーションでドイツ語が使用される場合に数値グループ・セパレータをピリオドに設定するには、次のコードを使用します。
<!-- 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>
<decimal-separator>: 小数点に使用されるセパレータ(たとえば、ピリオドやカンマなど)を定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。静的値またはCharacterオブジェクトと評価されるEL式を使用できます。設定されている場合、この値が、解析および書式設定時にorg.apache.mtfaces.trinidad.converter.NumberConverterクラスで使用されます。
たとえば、アプリケーションでドイツ語が使用される場合に小数セパレータをカンマに設定するには、次のコードを使用します。
<!-- Set the decimal separator to comma for German -->
<!-- and period for all other languages -->
<decimal-separator>
#{view.locale.language=='de' ? ',' : '.'}
</decimal-separator>
ADF FacesおよびMyFaces Trinidadは、デフォルトでは、ローカライズされたテキストに使用されているのと同じロケール(デフォルトではブラウザのロケール)で、日付(週の最初の曜日も)と数値を書式設定します。ただし、その他のロケールで日付と数値を書式設定する場合は、IANA形式のコード(ja、fr-CAなど)を値とする<formatting-locale>要素を使用できます。この要素の内容は、IANA文字列を指すEL式またはjava.util.Localeオブジェクトです。
ADF Facesで使用される出力モードを変更するには、次のいずれかの値を使用して<output-mode>要素を設定します。
default: デフォルト・ページ出力モード(通常、表示)。
printable: 印刷可能ページに適した出力モード。
email: ページのコンテンツを電子メールするのに適した出力モード。
ADF Facesのデフォルトでは、アクティブなPageFlowScopeインスタンスの最大数が常に15に設定されます。この数を変更するには、<page-flow-scope-lifetime>要素を使用します。他の要素とは異なり、静的な値を使用する必要があります。EL式はサポートされません。
大半のアプリケーションでは、ADF Facesで用意されているデフォルトのUploadedFileProcessorインスタンスを置き換える必要はありません。しかし、アプリケーションで非常に大きなファイルのアップロードをサポートする必要がある場合、またはファイルのアップロードに大きく依存する場合、デフォルト・プロセッサをカスタムUploadedFileProcessor実装で置き換えることができます。
たとえば、ADF Facesでリクエスト時に一時格納を処理するかわりに、最終的な格納場所にファイルを即座に格納する実装を使用することにより、パフォーマンスを向上させることができます。デフォルト・プロセッサを置き換えるには、次のコードに示すように、<uploaded-file-processor>要素を使用してカスタム実装を指定します。
<uploaded-file-processor> com.mycompany.faces.myUploadedFileProcessor </uploaded-file-processor>
ADF Facesのバリデータとコンバータでは、クライアント側の検証および変換とサーバー側の検証および変換がサポートされます。ADF Facesのクライアント側バリデータとコンバータは、クライアントでJavaScriptが使用される以外は、サーバー側バリデータとコンバータと同様に動作します。
JavaScript対応のバリデータとコンバータは、フォームの送信時にクライアントで実行されるため、サーバーへのラウンドトリップなしにエラーが捕捉されます。
リッチ・クライアント版のADF Facesでは、<client-validation-disabled>構成要素はサポートされていません。つまり、ADF Facesアプリケーションでは、クライアント側検証と変換を無効にできません。
JDeveloperでは、ADF Facesコンポーネントを使用してJSFページを作成する場合、skyrosスキン・ファミリがデフォルトで使用されます。スキン・ファミリは、A.6.1項「trinidad-config.xmlでのADF Facesの機能の構成方法」での説明のとおり、trinidad-config.xmlファイルで構成されます。アプリケーションにカスタム・スキンを使用する場合、アプリケーションへのカスタム・スキンの登録に使用されるtrinidad-skins.xmlファイルを作成します。
カスタム・スキンの作成の詳細は、第20章「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
ADF Facesでは、EL暗黙オブジェクトrequestContextを使用して、trinidad-config.xmlファイルで定義されている構成プロパティから値を取得できます。requestContext暗黙オブジェクトはorg.apache.myfaces.trinidad.context.RequestContextクラスのインスタンスで、java.util.Mapタイプのいくつかのプロパティを公開して、JSF EL式によるコンテキスト・オブジェクト・プロパティ値の取得を可能にします。
たとえば、EL式#{requestContext}はRequestContextオブジェクト自体を返し、EL式#{requestContext.skinFamily}は、<skin-family>要素の値をtrinidad-config.xmlファイルから返します。
EL式を使用して、コンポーネント属性値をrequestContext暗黙オブジェクトのプロパティにバインドすることもできます。たとえば、次のEL式では、<currency-code>プロパティがJSF ConvertNumberコンポーネントのcurrencyCode属性値にバインドされています。
<af:outputText>
<f:convertNumber currencyCode="#{requestContext.currencyCode}"/>
</af:outputText>
次のrequestContext暗黙オブジェクトのプロパティを使用できます。
requestContext.accessibilityMode: <accessibility-mode>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.agent: リクエストを行っているクライアント・エージェントを示し、レンダリングされた出力を表示するオブジェクトを返します。agentオブジェクトのプロパティは次のとおりです。
agentName: エージェント・ブラウザの正規の名前(gecko、ieなど)。
agentVersion: エージェント・ブラウザのバージョン番号。
capabilities: 現在のクライアント・リクエストに対する機能名(高さ、幅など)とその値のMapです。
hardwareMakeModel: ハードウェア・メーカーとモデルの正規の名前(nokia6600、sonyericssonP900など)。
platformName: プラットフォームの正規の名前(ppc、windows、macなど)。
platformVersion: プラットフォームのバージョン番号。
type: エージェント・タイプ(desktop、pda、phoneなど)。
requestContext.clientValidationDisabled: <client-validation-disabled>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.colorPalette: カラー・パレット名をキーとし、カラー・パレットを結果として返すMapを返します。各カラー・パレットは、java.awt.Colorオブジェクトの配列です。4つの標準カラー・パレットへのアクセスを提供します。
web216: 216のWebセーフ・カラー
default49: 全透明のエントリを1つ含む49色のパレット
opaque40: 全透明のエントリを含まない49色のパレット
default80: 全透明のエントリを1つ含む80色のパレット
requestContext.currencyCode: <currency-code>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.debugOutput: <debug-output>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.decimalSeparator: <decimal-separator>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.formatter: 再帰的Map構造を使用してメッセージを書式設定するMapオブジェクトを返します。最初のキーはメッセージの書式設定マスクで、2番目のキーはメッセージの最初のパラメータです。
requestContext.helpSystem: ヘルプ・システム・プロパティをキーとして受け入れ、URLを結果として返すMapオブジェクトを返します。たとえば、EL式#{requestContext.helpSystem['frontPage']}は、ヘルプ・システムのフロント・ページへのURLを返します。trinidad-config.xmlファイルに<oracle-help-servlet-url>要素を構成してあることを前提とします。
requestContext.helpTopic: トピック名をキーとして受け入れ、URLを結果として返すMapオブジェクトを返します。たとえば、EL式#{requestContext.helpTopic['foo']}は、ヘルプ・トピックfooへのURLを返します。trinidad-config.xmlファイルに<oracle-help-servlet-url>要素を構成してあることを前提とします。
requestContext.numberGroupingSeparator: <number-grouping-separator>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.oracleHelpServletUrl: <oracle-help-servlet-url>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.outputMode: <output-mode>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.pageFlowScope: pageFlowScopeオブジェクトでのオブジェクトのMapを返します。
requestContext.rightToLeft: <right-to-left>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.skinFamily: <skin-family>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.timeZone: <time-zone>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.twoDigitYearStart: <two-digit-year-start>要素の値をtrinidad-config.xmlファイルから返します。
プロパティの一覧については、『Javadoc』の「org.apache.myfaces.trinidad.context.RequestContext」を参照してください。
|
注意: リクエストごとに、 構成プロパティをプログラムで取得するには、次のコードに示すように、まず、静的
RequestContext context = RequestContext.getCurrentInstance();
// Get the time-zone property
TimeZone zone = context.getTimeZone();
// Get the right-to-left property
if (context.isRightToLeft())
{
.
.
.
}
|
ADF Facesは、そのコンポーネントのJavaScriptファイルをJavaScript機能にグループ化します。JavaScript機能は、その機能を記述する論理識別子に関連付けられたJavaScriptファイルのコレクションです。たとえば、panelStretchLayoutクライアント・コンポーネントは、次の2つのJavaScriptファイルで構成されます。
oracle/adf/view/js/component/rich/layout/
AdfRichPanelStretchLayout.js
oracle/adfinternal/view/js/laf/dhtml/rich/
AdfDhtmlPanelStretchLayoutPeer.js
これらの2つのファイルは、AdfRichPanelStretchLayout機能にグループ化されます。
JavaScriptの機能は、さらにJavaScriptパーティションにグループ分けされます。JavaScriptパーティションを使用すると、ダウンロード・サイズとラウンドトリップの数に影響を与える目的で、JavaScriptの機能を、より大きなまとまりに分けることができます。たとえば、panelStretchLayoutコンポーネントはpanelSplitterコンポーネントとともに使用されることが多いため、この2つのコンポーネントの機能は、その子をストレッチできるADF Facesレイアウト・コンポーネントと一緒にストレッチ・パーティションにまとめられます。実行時、ページをロードすると、フレームワークはページで使用されるコンポーネントを決定し、そこから、必要な機能を決定します(機能名は、コンポーネントのコンストラクタ名と同じ)。これらの機能が含まれるパーティションのみがダウンロードされます。JavaScriptパーティション化の詳細は、1.2.1.2項「JavaScriptライブラリのパーティション化」を参照してください。
機能およびパーティションは、構成ファイルを使用して定義されます。ADF Facesには、デフォルトの機能およびパーティション構成ファイルが含まれています。独自の実装を作成することでデフォルトのパーティションを上書きできます。カスタムADF Facesコンポーネントを作成する場合、これらのコンポーネントに独自の機能およびパーティション構成ファイルを作成できます。
デフォルトでJavaScriptのパーティション化は有効にされています。アプリケーションでJavaScriptのパーティション化を使用するかどうかは、web.xmlファイルのコンテキスト・パラメータによって決定されます。JavaScriptのパーティション化の有効化および無効化の詳細は、A.2.3.15項「JavaScriptのパーティション化」を参照してください。
adf-js-features.xml fileファイルを作成してから機能にエントリを追加することでJavaScript機能を作成できます。
|
注意: カスタムADF Facesコンポーネントを作成する場合に、JavaScript機能を作成できます。すべての既存のADF Facesコンポーネントには、すでにそれらのコンポーネント向けに作成された機能があり、これらは変更できません。 |
JavaScript機能を作成する手順:
コンポーネント用のMETA-INFディレクトリの作成がまだの場合は、これを作成します。
META-INFディレクトリを右クリックし、ポップアップ・メニューから「新規」を選択します。
「新規ギャラリ」で「一般」を開き、「XML」→「XMLドキュメント」の順に選択し、「OK」をクリックします。
|
ヒント: 「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。 |
ファイル名にadf-js-features.xmlと入力し、META-INFディレクトリに保存します。
ソース・エディタで、生成されたコードを例A-6のコードに置き換えます。
次の要素を追加すると、関連するコンポーネント・ファイルおよび依存性とともに機能が移入されます。
features: 構成ファイルのルート要素です。
feature: features要素の子として作成されます。この要素には1つのfeature-name子要素が含まれている必要があり、feature-class要素およびfeature-dependency要素はいくつでも含めることができます。
feature-name: feature要素の子として作成されます。機能の名前を指定します。この値にはクライアント・コンポーネントのコンストラクタ名を使用する必要があります。
feature-class: feature要素の子として作成されます。この機能に含める1つのJavaScriptファイルまたはクラスの場所を指定します。複数のfeature-class要素がある場合もあります。
feature-dependency: feature要素の子として作成されます。この機能が依存する別の機能の名前を指定します。たとえば、コンポーネントBでコンポーネントAを拡張する場合、コンポーネントAを示す機能はコンポーネントBへの依存性としてリストされている必要があります。依存性を記述することで、フレームワークは2つの機能が同じパーティションになくても、依存するクラスが使用できることを確認できます。
例A-20に、ポップアップ・コンポーネントを使用し、ポップアップ機能への依存性を持つ架空のカスタム・コンポーネントのfeature要素を示します。
例A-20 JavaScript機能の構成
<features xmlns="http://xmlns.oracle.com/adf/faces/feature">
<feature>
<feature-name>AcmeMyPane</feature-name>
<feature-class>
oracle/adfdemo/acme/js/component/AcmeMyPane.js
</feature-class>
<feature-class>
oracle/adfdemo/acme/js/event/AcmePaneSelectEvent.js
</feature-class>
<feature-class>
oracle/adfdemo/acme/js/component/AcmeMyPanePeer.js
</feature-class>
<!-- Dependencies -->
<!-- Popup hints -->
<feature-dependency>AdfRichPopup</feature-dependency>
</feature>
adf-js-partitions.xmlファイルを作成してから機能にエントリを追加することでJavaScriptパーティションを作成できます。
|
注意: ADF Facesには、デフォルトの |
JavaScriptパーティションを作成する手順:
WEB-INFディレクトリを右クリックし、ポップアップ・メニューから「新規」を選択します。
「新規ギャラリ」で「一般」を開き、「XML」→「XMLドキュメント」の順に選択し、「OK」をクリックします。
|
ヒント: 「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。 |
ファイル名にadf-js-partitions.xmlと入力し、WEB-INFディレクトリに保存します。
ソース・エディタで、生成されたコードを例A-6のコードに置き換えます。
次の要素を追加すると、関連する機能とともにパーティションが移入されます。
partitions: 構成ファイルのルート要素です。
partition: partitions要素の子として作成されます。この要素には1つのpartition-name子要素および1つ以上のfeature要素が含まれている必要があります。
partition-name: partition要素の子として作成されます。パーティションの名前を指定します。この値は、このパーティションのJavaScriptライブラリに一意のURLを作成するために使用されます。
feature: partition要素の子として作成されます。このパーティションに含める機能を指定します。複数のfeature要素がある場合もあります。
|
ヒント:
|
例A-22に、AdfRichTree機能およびAdfRichTreeTable機能を含むtreeパーティションのpartition要素を示します。
ADF Facesのデフォルトのadf-js-partitions.xmlファイルには、独自のパーティション・ファイルを作成することでオーバーライドできるパーティションがあります。詳細は、A.9.2項「JavaScriptパーティションの作成方法」を参照してください。例A-23に、ADF Facesのデフォルトのadf-js-partitions.xmlファイルを示します。
例A-23 デフォルトのadf-js-partitions.xmlファイル
<?xml version="1.0" encoding="utf-8"?>
<partitions xmlns="http://xmlns.oracle.com/adf/faces/partition">
<partition>
<partition-name>boot</partition-name>
<feature>AdfBootstrap</feature>
</partition>
<partition>
<partition-name>core</partition-name>
<feature>AdfCore</feature>
<!-- Behavioral component super classes -->
<feature>AdfUIChoose</feature>
<feature>AdfUICollection</feature>
<feature>AdfUICommand</feature>
<feature>AdfUIDialog</feature>
<feature>AdfUIDocument</feature>
<feature>AdfUIEditableValue</feature>
<feature>AdfUIForm</feature>
<feature>AdfUIGo</feature>
<feature>AdfUIInput</feature>
<feature>AdfUIObject</feature>
<feature>AdfUIOutput</feature>
<feature>AdfUIPanel</feature>
<feature>AdfUIPopup</feature>
<feature>AdfUISelectBoolean</feature>
<feature>AdfUISelectInput</feature>
<feature>AdfUISelectOne</feature>
<feature>AdfUISelectMany</feature>
<feature>AdfUIShowDetail</feature>
<feature>AdfUISubform</feature>
<feature>AdfUIValue</feature>
<!-- These are all so common that we group them with core -->
<feature>AdfRichDocument</feature>
<feature>AdfRichForm</feature>
<feature>AdfRichPopup</feature>
<feature>AdfRichSubform</feature>
<feature>AdfRichCommandButton</feature>
<feature>AdfRichCommandLink</feature>
<!--
Dialog is currently on every page for messaging. No use
in putting these in a separate partition.
-->
<feature>AdfRichPanelWindow</feature>
<feature>AdfRichDialog</feature>
<!-- af:showPopupBehavior is so small/common, belongs in core -->
<feature>AdfShowPopupBehavior</feature>
</partition>
<partition>
<partition-name>accordion</partition-name>
<feature>AdfRichPanelAccordion</feature>
</partition>
<partition>
<partition-name>border</partition-name>
<feature>AdfRichPanelBorderLayout</feature>
</partition>
<partition>
<partition-name>box</partition-name>
<feature>AdfRichPanelBox</feature>
</partition>
<partition>
<partition-name>calendar</partition-name>
<feature>AdfUICalendar</feature>
<feature>AdfRichCalendar</feature>
<feature>AdfCalendarDragSource</feature>
<feature>AdfCalendarDropTarget</feature>
</partition>
<partition>
<partition-name>collection</partition-name>
<feature>AdfUIDecorateCollection</feature>
<feature>AdfRichPanelCollection</feature>
</partition>
<partition>
<partition-name>color</partition-name>
<feature>AdfRichChooseColor</feature>
<feature>AdfRichInputColor</feature>
</partition>
<partition>
<partition-name>date</partition-name>
<feature>AdfRichChooseDate</feature>
<feature>AdfRichInputDate</feature>
</partition>
<partition>
<partition-name>declarativeComponent</partition-name>
<feature>AdfUIInclude</feature>
<feature>AdfUIDeclarativeComponent</feature>
<feature>AdfRichDeclarativeComponent</feature>
</partition>
<partition>
<partition-name>detail</partition-name>
<feature>AdfRichShowDetail</feature>
</partition>
<partition>
<partition-name>dnd</partition-name>
<feature>AdfDragAndDrop</feature>
<feature>AdfCollectionDragSource</feature>
<feature>AdfStampedDropTarget</feature>
<feature>AdfCollectionDropTarget</feature>
<feature>AdfAttributeDragSource</feature>
<feature>AdfAttributeDropTarget</feature>
<feature>AdfComponentDragSource</feature>
<feature>AdfDropTarget</feature>
</partition>
<partition>
<partition-name>detailitem</partition-name>
<feature>AdfRichShowDetailItem</feature>
</partition>
<partition>
<partition-name>file</partition-name>
<feature>AdfRichInputFile</feature>
</partition>
<partition>
<partition-name>form</partition-name>
<feature>AdfRichPanelFormLayout</feature>
<feature>AdfRichPanelLabelAndMessage</feature>
</partition>
<partition>
<partition-name>format</partition-name>
<feature>AdfRichOutputFormatted</feature>
</partition>
<partition>
<partition-name>frame</partition-name>
<feature>AdfRichInlineFrame</feature>
</partition>
<partition>
<partition-name>header</partition-name>
<feature>AdfRichPanelHeader</feature>
<feature>AdfRichShowDetailHeader</feature>
</partition>
<partition>
<partition-name>imagelink</partition-name>
<feature>AdfRichCommandImageLink</feature>
</partition>
<partition>
<partition-name>iedit</partition-name>
<feature>AdfInlineEditing</feature>
</partition>
<partition>
<partition-name>input</partition-name>
<feature>AdfRichInputText</feature>
<feature>AdfInsertTextBehavior</feature>
</partition>
<partition>
<partition-name>label</partition-name>
<feature>AdfRichOutputLabel</feature>
</partition>
<partition>
<partition-name>list</partition-name>
<feature>AdfRichPanelList</feature>
</partition>
<partition>
<partition-name>lov</partition-name>
<feature>AdfUIInputPopup</feature>
<feature>AdfRichInputComboboxListOfValues</feature>
<feature>AdfRichInputListOfValues</feature>
</partition>
<partition>
<partition-name>media</partition-name>
<feature>AdfRichMedia</feature>
</partition>
<partition>
<partition-name>message</partition-name>
<feature>AdfUIMessage</feature>
<feature>AdfUIMessages</feature>
<feature>AdfRichMessage</feature>
<feature>AdfRichMessages</feature>
</partition>
<partition>
<partition-name>menu</partition-name>
<feature>AdfRichCommandMenuItem</feature>
<feature>AdfRichGoMenuItem</feature>
<feature>AdfRichMenuBar</feature>
<feature>AdfRichMenu</feature>
</partition>
<partition>
<partition-name>nav</partition-name>
<feature>AdfUINavigationPath</feature>
<feature>AdfUINavigationLevel</feature>
<feature>AdfRichBreadCrumbs</feature>
<feature>AdfRichCommandNavigationItem</feature>
<feature>AdfRichNavigationPane</feature>
</partition>
<partition>
<partition-name>note</partition-name>
<feature>AdfRichNoteWindow</feature>
</partition>
<partition>
<partition-name>poll</partition-name>
<feature>AdfUIPoll</feature>
<feature>AdfRichPoll</feature>
</partition>
<partition>
<partition-name>progress</partition-name>
<feature>AdfUIProgress</feature>
<feature>AdfRichProgressIndicator</feature>
</partition>
<partition>
<partition-name>print</partition-name>
<feature>AdfShowPrintablePageBehavior</feature>
</partition>
<partition>
<partition-name>scrollComponentIntoView</partition-name>
<feature>AdfScrollComponentIntoViewBehavior</feature>
</partition>
<partition>
<partition-name>query</partition-name>
<feature>AdfUIQuery</feature>
<feature>AdfRichQuery</feature>
<feature>AdfRichQuickQuery</feature>
</partition>
<partition>
<partition-name>region</partition-name>
<feature>AdfUIRegion</feature>
<feature>AdfRichRegion</feature>
</partition>
<partition>
<partition-name>reset</partition-name>
<feature>AdfUIReset</feature>
<feature>AdfRichResetButton</feature>
</partition>
<partition>
<partition-name>rte</partition-name>
<feature>AdfRichTextEditor</feature>
<feature>AdfRichTextEditorInsertBehavior</feature>
</partition>
<partition>
<partition-name>select</partition-name>
<feature>AdfRichSelectBooleanCheckbox</feature>
<feature>AdfRichSelectBooleanRadio</feature>
<feature>AdfRichSelectManyCheckbox</feature>
<feature>AdfRichSelectOneRadio</feature>
</partition>
<partition>
<partition-name>selectmanychoice</partition-name>
<feature>AdfRichSelectManyChoice</feature>
</partition>
<partition>
<partition-name>selectmanylistbox</partition-name>
<feature>AdfRichSelectManyListbox</feature>
</partition>
<partition>
<partition-name>selectonechoice</partition-name>
<feature>AdfRichSelectOneChoice</feature>
</partition>
<partition>
<partition-name>selectonelistbox</partition-name>
<feature>AdfRichSelectOneListbox</feature>
</partition>
<partition>
<partition-name>shuttle</partition-name>
<feature>AdfUISelectOrder</feature>
<feature>AdfRichSelectManyShuttle</feature>
<feature>AdfRichSelectOrderShuttle</feature>
</partition>
<partition>
<partition-name>slide</partition-name>
<feature>AdfRichInputNumberSlider</feature>
<feature>AdfRichInputRangeSlider</feature>
</partition>
<partition>
<partition-name>spin</partition-name>
<feature>AdfRichInputNumberSpinbox</feature>
</partition>
<partition>
<partition-name>status</partition-name>
<feature>AdfRichStatusIndicator</feature>
</partition>
<partition>
<partition-name>stretch</partition-name>
<feature>AdfRichDecorativeBox</feature>
<feature>AdfRichPanelSplitter</feature>
<feature>AdfRichPanelStretchLayout</feature>
<feature>AdfRichPanelDashboard</feature>
<feature>AdfPanelDashboardBehavior</feature>
<feature>AdfDashboardDropTarget</feature>
</partition>
<partition>
<partition-name>tabbed</partition-name>
<feature>AdfUIShowOne</feature>
<feature>AdfRichPanelTabbed</feature>
</partition>
<partition>
<partition-name>table</partition-name>
<feature>AdfUIIterator</feature>
<feature>AdfUITable</feature>
<feature>AdfUITable2</feature>
<feature>AdfUIColumn</feature>
<feature>AdfRichColumn</feature>
<feature>AdfRichTable</feature>
</partition>
<partition>
<partition-name>toolbar</partition-name>
<feature>AdfRichCommandToolbarButton</feature>
<feature>AdfRichToolbar</feature>
</partition>
<partition>
<partition-name>toolbox</partition-name>
<feature>AdfRichToolbox</feature>
</partition>
<partition>
<partition-name>train</partition-name>
<feature>AdfUIProcess</feature>
<feature>AdfRichCommandTrainStop</feature>
<feature>AdfRichTrainButtonBar</feature>
<feature>AdfRichTrain</feature>
</partition>
<partition>
<partition-name>tree</partition-name>
<feature>AdfUITree</feature>
<feature>AdfUITreeTable</feature>
<feature>AdfRichTree</feature>
<feature>AdfRichTreeTable</feature>
</partition>
<!--
Some components which typically do have client-side representation,
but small enough that we might as well download in a single partition
in the event that any of these are needed.
-->
<partition>
<partition-name>uncommon</partition-name>
<feature>AdfRichGoButton</feature>
<feature>AdfRichIcon</feature>
<feature>AdfRichImage</feature>
<feature>AdfRichOutputText</feature>
<feature>AdfRichPanelGroupLayout</feature>
<feature>AdfRichSeparator</feature>
<feature>AdfRichSpacer</feature>
<feature>AdfRichGoLink</feature>
</partition>
<partition>
<partition-name>eum</partition-name>
<feature>AdfEndUserMonitoring</feature>
</partition>
<partition>
<partition-name>ads</partition-name>
<feature>AdfActiveDataService</feature>
</partition>
<partition>
<partition-name>automation</partition-name>
<feature>AdfAutomationTest</feature>
</partition>
</partitions>
ADF Facesによって、アプリケーションの初期化時にライブラリのパーティション構成ファイルがロードされます。まず、ADF Facesによって、META-INFディレクトリのすべてのadf-js-features.xmlファイルが検索され、見つかったすべてのファイルがロードされます(ADF Facesのデフォルトの機能構成ファイルを含む)。
パーティション構成ファイルについては、ADF FacesはWEB-INFディレクトリでadf-js-partitions.xmlという名前の1つのファイルを検索します。このファイルが見つからない場合は、ADF Facesのデフォルトのパーティション構成が使用されます。
レンダリング・トラバース中、ADF Facesはページによって必要とされるJavaScript機能に関する情報を収集します。トラバース終了時に(レンダリングされた)ページ・コンテンツによって必要とされるJavaScript機能の包括的なセットが認識されます。必要とされるJavaScript機能のセットが認識されると、ADF Facesはパーティション構成ファイルを使用して、この機能セットを、必要とされるパーティションのセットにマップします。必要とされるパーティションのセットを使用して、これらのパーティションへのHTML <script>参照は、HTMLドキュメントの末尾直前でレンダリングされます。