ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Webユーザー・インタフェース開発者ガイド
11gリリース1 (11.1.1.7.0)
B52029-11
  目次へ移動
目次

前
 
次
 

A ADF Facesの構成

この付録では、JSFおよびADF Facesの機能を各種XML構成ファイルで構成する方法、RequestContext APIを使用してADF Faces構成値を取得する方法、およびJavaScriptのパーティション化の使用方法について説明します。

この章では、次の項目について説明します。

A.1 ADF Facesの構成の概要

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リッチ・クライアントの概要」を参照してください。

A.2 web.xmlでの構成

JSFアプリケーションの構成の一部は、Java EEアプリケーション・デプロイメント・ディスクリプタ(web.xml)の内容で決まります。/WEB-INFディレクトリにあるweb.xmlファイルでは、サーバーが認識する必要のあるアプリケーションに関するすべての情報(JDeveloperで自動的に割り当てられる、あるいはアプリケーションのデプロイ時にシステム管理者によって割り当てられるルート・コンテキスト・パス以外)を定義する必要があります。web.xmlファイルでの典型的なランタイム設定には、初期化パラメータ、カスタム・タグ・ライブラリの場所およびセキュリティ設定があります。

ADF Facesを使用するすべてのアプリケーションに対する次の設定がweb.xmlファイルで構成されます。


注意:

ADF Facesコンポーネントをアプリケーションで最初に使用した際に、JDeveloperで、必要なADF Faces構成がweb.xmlファイルに自動的に追加されます。


必要な要素の詳細は、A.2.2項「web.xmlに必要な要素に関する必知事項」を参照してください。

web.xmlのADF Faces関連のオプションの構成要素の詳細は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータに関する必知事項」を参照してください。

ADF Faces以外のweb.xmlの構成の詳細は、Oracleの『Webアプリケーション、サーブレット、JSPの開発』を参照してください。

A.2.1 web.xmlでのJSFとADF Facesの構成方法

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バインディング・フィルタとサーブレット・コンテキスト・パラメータがweb.xmlファイルに追加されます。


ADF Facesの構成オプションは、<context-param>要素を使用してweb.xmlに設定されます。

web.xmlにADF Faces構成要素を追加する手順:

  1. アプリケーション・ナビゲータで、「web.xml」をダブルクリックし、ファイルを開きます。

    JDeveloperでは、web.xmlはデフォルトでは概要エディタで開きます。これは、エディタ・ウィンドウの下部の「概要」タブがアクティブなことで示されます。

    概要エディタを使用してエントリを宣言的に追加または編集すると、JDeveloperでweb.xmlファイルが自動的に更新されます。

  2. web.xmlファイルのXMLコードを直接編集するには、エディタ・ウィンドウの下部の「ソース」をクリックします。

    XMLエディタで要素を編集すると、JDeveloperで変更が概要エディタに反映されます。

追加できるコンテキスト・パラメータの一覧は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータに関する必知事項」を参照してください。

A.2.2 web.xmlに必要な要素に関する必知事項

web.xmlに必要なJSFおよびADF Facesに関するアプリケーション全体の構成要素は次のとおりです。

  • コンテキスト・パラメータjavax.faces.STATE_SAVING_METHOD: アプリケーションのビューの状態の格納場所を指定します。デフォルトでは、この値はclientであり、アプリケーションのビュー状態がブラウザ・クライアントに格納されます。clientに設定した場合、ADF Facesでトークンベースのクライアント側の状態保存が自動的に使用されます。デフォルトの15を使用するかわりに、使用するトークンの数を指定できます。状態保存コンテキスト・パラメータの詳細は、A.2.3項「web.xmlのADF Facesコンテキスト・パラメータに関する必知事項」を参照してください。

  • MyFaces Trinidadフィルタおよびマッピング: 部分的にRequestContextオブジェクトを構成することで、ADF Facesが適切に初期化されていることを保証するサーブレット・フィルタである、MyFaces Trinidadフィルタorg.apache.myfaces.trinidad.webapp.TrinidadFilterをインストールします。TrinidadFilterは、ファイル・アップロードも処理します。フィルタ・マッピングは、JSFサーブレットのシンボリック名をMyFaces Trinidadフィルタにマップします。フォワードおよびリクエスト・ディスパッチャは、MyFaces Trinidadフィルタに転送中のその他のフィルタに必要です。


    ヒント:

    アプリケーションで複数のフィルタを使用する場合、フィルタを実行順にweb.xmlファイルに必ずリストします。実行時、このファイルにリストされた順にフィルタがコールされます。


  • MyFaces Trinidadリソース・サーブレットおよびマッピング: リソース・ローダーに委任することでWebアプリケーション・リソース(イメージ、スタイルシート、JavaScriptライブラリ)を処理する、MyFaces Trinidadリソース・サーブレットorg.apache.myfaces.trinidad.webapp.ResourceServletをインストールします。サーブレット・マッピングは、MyFaces Trinidadリソース・サーブレットのシンボリック名をURLパターンにマップします。JDeveloperではデフォルトで、MyFaces Trinidad Coreには/adf/*が、ADF Facesには/afr/*が使用されます。

  • 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ファイルがロードされます。

A.2.3 web.xmlのADF Facesコンテキスト・パラメータに関する必知事項

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では、次のコンテキスト・パラメータがサポートされています。

A.2.3.1 状態保存

次の状態保存コンテキスト・パラメータを指定できます。

  • org.apache.myfaces.trinidad.CLIENT_STATE_METHOD: クライアント側状態保存がjavax.faces.STATE_SAVING_METHODを使用して有効になっている場合、使用するクライアント側状態保存のタイプを指定します。CLIENT_STATE_METHODの値は次のとおりです。

    • token: (デフォルト)ページの状態はセッションに格納しますが、トークンはクライアントに永続させます。HttpSessionオブジェクトに格納されている状態のブロックを識別するシンプル・トークンは、クライアントに格納されます。これにより、複数回表示される同一ページがADF Facesで明確になります。フェイルオーバーがサポートされます。

    • all: すべての状態情報がクライアントの(場合によっては非常に大きい)非表示のフォーム・フィールドに格納されます。これは、HttpSessionを使用しない開発者にとって有用です。


    パフォーマンスのヒント:

    すべての状態情報を格納するとサイズが大きくなる可能性があることから、クライアント側状態保存をtokenに設定することをお薦めします。


  • org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS: トークンベースのクライアント側の状態保存が有効化されている場合に、ユーザーごとに一度に保存できるトークンの数を指定します。デフォルトは15です。トークンがこの数を超えると、表示頻度の最も低いページの状態が失われるため、「戻る」ボタンを頻繁に使用するユーザーや、同時に複数のウィンドウを開いているユーザーが影響を受けます。フレームへの依存度が高いHTMLアプリケーションを作成する場合は、この値を増やすことができます。

  • org.apache.myfaces.trinidad.COMPRESS_VIEW_STATE: セッションで状態保存をグローバルに圧縮するかどうかを指定します。各ユーザー・セッションには、ライブ・メモリーを大量に消費する複数のpageStateオブジェクトが含まれていることがあり、その場合はパフォーマンスに影響があります。このオーバーヘッドは、セッション・レプリケーションの実行時に、クラスタリングではるかに大きな問題になる可能性があります。デフォルトはoffです。

  • org.apache.myfaces.trinidad.USE_APPLICATION_VIEW_CACHE: アプリケーション表示キャッシュ(AVC)を有効にします。これにより、ページのUIの初期レンダーの状態をアプリケーションの範囲でキャッシュすることで、スケーラビリティが向上します。ただし、予想外の状態のデバッグやユーザー間の情報漏れに関する問題を回避するには、AVCでアプリケーションのすべてのページを分析してサポートする必要があります。また、サーバーの再起動までページ更新が通知されないため、開発はさらに難しくなり、初期レンダー・パフォーマンスは強化されますが、セッション・サイズは改善されません。


    注意:

    アプリケーション表示キャッシュは、このリリースではサポートされません。この機能は、コンポーネント・ツリーのレンダリングが原因でコンポーネント・ツリーの構造が一時的に変わるページでは機能しません。これは頻繁に起こることがあるため、USE_APPLICATION_VIEW_CACHEを使用しないでください。


A.2.3.2 デバッギング

次のデバッグ・コンテキスト・パラメータを指定できます。

  • 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ファイルの更新日付が自動的に確認され、ファイルに変更があった場合、保存されている状態が破棄されます。


    パフォーマンスのヒント:

    trueの場合、このCHECK_FILE_MODIFICATIONパラメータにより、アプリケーションのデプロイ時には不要となるオーバーヘッドが追加されます。アプリケーションを実行環境にデプロイする場合はfalseに設定します。


  • oracle.adf.view.rich.LOGGER_LEVEL: このパラメータでは、デフォルト・レンダー・キットがoracle.adf.richの場合、JavaScriptロギングを有効にします。デフォルトは、OFFです。JavaScriptロギングを有効にする場合、SEVEREWARNINGINFOCONFIGFINEFINERFINESTALLのいずれかのレベルを使用します。


    パフォーマンスのヒント:

    JavaScriptロギングはパフォーマンスに影響します。実行環境では、この値はOFFに設定します。


A.2.3.3 ファイルのアップロード

次のファイル・アップロード・コンテキスト・パラメータを指定できます。

  • org.apache.myfaces.trinidad.UPLOAD_MAX_MEMORY: 1回のリクエストでアップロード・ファイルを格納するために使用できる最大メモリー容量を指定します。デフォルトは100KBです。

  • org.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACE: アップロードしたファイルを格納する1つのリクエストで使用されるディスク領域の最大サイズを指定します。デフォルトは2000KBです。

  • org.apache.myfaces.trinidad.UPLOAD_TEMP_DIR: ファイルのアップロード時に一時ファイルを格納するディレクトリを指定します。デフォルトは、ユーザーの一時ディレクトリです。


注意:

ファイル・アップロードの初期化パラメータは、デフォルトのUploadedFileProcessorのみで処理されます。デフォルト・プロセッサをカスタムUploadedFileProcessor実装で置き換える場合、パラメータは処理されません。


A.2.3.4 リソース・デバッグ・モード

次の内容を指定できます。

  • org.apache.myfaces.trinidad.resource.DEBUG: リソース・デバッグ・モードが有効かどうかを指定します。デフォルトは、falseです。リソース・デバッグ・モードを有効にする場合、trueに設定します。有効な場合、ADF FacesはHTTPレスポンス・ヘッダーを設定して、リソース(JavaScriptライブラリ、イメージ、CSSなど)をキャッシュできないことをブラウザに知らせます。


    ヒント:

    リソース・デバッグ・モードを有効にした後、ブラウザのキャッシュをクリアして、ブラウザでリソースの最新バージョンがロードされるようにします。



    パフォーマンスのヒント:

    本番環境では、このパラメータは削除するか、falseに設定します。


A.2.3.5 アサーション

oracle.adf.view.rich.ASSERT_ENABLEDパラメータを使用して、ADF Faces内でアサーションを使用するかどうかを指定できます。デフォルトは、falseです。アサーションを有効にするにはtrueに設定します。


パフォーマンスのヒント:

アサーションはパフォーマンスに影響します。実行時環境では、この値はfalseに設定します。


A.2.3.6 Real User Experience Insightに対するアプリケーションの有効化

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に対するアプリケーションの有効化に関する項を参照してください。

A.2.3.7 Faceletサポート

FaceletとADF Facesを組み合せて使用する場合、次の指定を行う必要があります。

  • org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER: パラメータの値をcom.sun.facelets.FaceletViewHandlerに設定して、FaceletsViewHandlerをインストールします。

  • javax.faces.DEFAULT_SUFFIX: パラメータの値を.xhtmlに設定して、Faceletを使用するドキュメントのファイル拡張子に.xhtmlを使用します。

A.2.3.8 ダイアログ接頭辞

ダイアログを起動する接頭辞を変更するには、org.apache.myfaces.trinidad.DIALOG_NAVIGATION_PREFIXパラメータを設定します。

デフォルトはdialog:で、ダイアログを起動するJSFナビゲーション・ルールの結果の冒頭に使用されます(dialog:errorなど)。

A.2.3.9 CSSクラス名の圧縮

org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSIONパラメータを設定して、スキニング・キーのCSSクラス名の圧縮を決定できます。

デフォルトは、falseです。圧縮を無効にする場合、trueに設定します。


パフォーマンスのヒント:

圧縮はパフォーマンスに影響します。本番環境では、このパラメータをfalseに設定します。


A.2.3.10 テストの自動化

oracle.adf.view.rich.automation.ENABLEDパラメータをtrueに設定し、コンポーネントID属性がnullの場合、自動テストの際、IDがnullでないようコンポーネントのtestIdが使用されます。testIdはタグのみの属性です。JavaコンポーネントAPIの一部ではありません。このコンテキスト・パラメータで有効化されるのはテスト自動化のインフラストラクチャのみであり、テスト自体は開始されません。テストを開始するには、オープン・ソースのSelenium IDEのようなツールが必要になります。


注意:

テスト自動化コンテキスト・パラメータをtrueに設定すると、oracle.adf.view.rich.security.FRAME_BUSTINGコンテキスト・パラメータはneverに設定された場合と同じように動作します。フレームバスティングを無効にした場合のセキュリティの結果として、ユーザーのアプリケーションのページは悪質なWebサイトからのクリックジャックに対して脆弱になります。このため、テスト自動化の使用を開発環境またはステージング環境に限定し、本番環境でテスト自動化を有効にしないでください。詳細は、A.2.3.15項「フレームバスティング」を参照してください。


また、テスト自動化を有効化することによって、実行中のアプリケーションでアサーションが有効になります。使用しているアプリケーションで予想外のコンポーネント動作が発生し、新規アサーションの失敗エラーが表示されるようになったら、アプリケーション・コンポーネントの実装の詳細を調べる必要があります。たとえば、応答のなくなったユーザー・アクションなど、ポップアップ・ダイアログ関連の問題が発見されることは珍しいことではありません。

テスト自動化を有効にした後でのみアサーション失敗エラーを生成する既知のコーディング・エラーが表示されます。

  • ユーザーのコンポーネントでは、もはやページ定義ファイルに存在しない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ファイルのコンテキスト・パラメータの設定がオーバーライドされます。

A.2.3.11 UIViewRootキャッシング

UIViewRootキャッシングを有効化または無効化するには、org.apache.myfaces.trinidad.CACHE_VIEW_ROOTパラメータを使用します。トークンのクライアント側状態保存が有効化されている場合、各トークンを使用してUIViewRootツリー全体をキャッシュすることにより、MyFaces Trinidadで更なる最適化が行われます。(これは、スレッドの安全性やセッションのフェイルオーバーには影響しないことに注意してください。)UIViewRootツリーを再インスタンス化する必要がなく、ポストバックの処理スピードが大幅に速くなるため、これはAJAX集中型システムにとって重要な最適化です。

キャッシングを有効にするには、org.apache.myfaces.trinidad.CACHE_VIEW_ROOTパラメータをtrueに設定します。これがデフォルトです。キャッシングを無効にするには、パラメータをfalseに設定します。


注意:

この種のキャッシングは、一部のJSFテクノロジと干渉することが認識されています。特に、Apache MyFaces Tomahawk saveStateコンポーネントが機能せず、Faceletのテンプレート・テキストが二重に表示される場合があります。


A.2.3.12 テーマと色調スタイル

色調スタイルの使用をオフまたはオンにするには、oracle.adf.view.rich.tonalstyles.ENABLEDパラメータを使用します。色調スタイル・クラス.AFDarkTone.AFMediumTone.AFLightToneおよび.AFDefaultToneは、下位互換性の目的で引き続き使用できますが、テーマは置換スタイルとして提供されます。テーマは色調スタイルより作成しやすく、依存するセレクタが少ない上に、CSS包含セレクタも使用されません。このため、不具合が起こりにくくなります。1つのCSSファイル内のセレクタ数に対する制限により、色調スタイルおよびテーマの両方を、同じアプリケーションでサポートすることはできません。色調スタイルを無効にするには、falseに設定します。

A.2.3.13 部分ページ・ナビゲーション

oracle.adf.view.rich.pprNavigation.OPTIONSパラメータを使用して、部分ページ・ナビゲーションを有効化および無効化します。デフォルトでは、値はoffです。部分ページ・ナビゲーションでは、アプリケーション全体で同じベース・ページを使用し、単にページ本体のコンテンツを各ナビゲーションに置き換えます。このプロセスにより、ページが新しくなるたびにJavaScriptライブラリとスタイル・シートを再ロードする必要がなく、パフォーマンスが向上します。詳細は、7.4項「部分ページ・ナビゲーションの使用」を参照してください。

有効な値は次のとおりです。

  • on: アプリケーションのPPRナビゲーションを有効にします。


    注意:

    パラメータを有効にする場合、ナビゲーションに含まれるコマンド・コンポーネントのpartialSubmit属性をtrueに設定する必要があります。partialSubmitの詳細は、5.1.1項「イベントおよび部分ページ・レンダリング」を参照してください。


  • off: アプリケーションのPPRナビゲーションを無効にします。

  • onWithForcePPR: コマンド・コンポーネントでのアクションの結果としてナビゲーションが行われる場合、コンポーネントのpartialSubmit属性がtrueに設定されている場合と同様に、アクションは常にPPRを使用して配信されます。partialSubmitの詳細は、5.1.1項「イベントおよび部分ページ・レンダリング」を参照してください。コンポーネントのpartialSubmitがすでにtrueに設定されている場合、フレームワークでの処理はありません。partialSubmittrueに設定されていない場合、ドキュメント全体がリフレッシュされ、古いページ・リフレッシュ動作が保持されます。アクション・コンポーネントにナビゲーションが含まれない場合も、ドキュメント全体がリフレッシュされます。

A.2.3.14 JavaScriptのパーティション化

oracle.adf.view.rich.libraryPartitioning.ENABLEDパラメータを使用して、JavaScriptのパーティション化の有効/無効を切り替えます。デフォルトでは、値はtrue(有効)です。JavaScriptのパーティション化を使用すると、ページのクライアント・コンポーネントによって必要とされるJavaScriptのみをダウンロードできます。

有効な値は次のとおりです。

  • true: JavaScriptのパーティション化が有効にされています(デフォルト)。

  • false: JavaScriptのパーティション化が無効にされています。

JavaScriptのパーティション化の使用および構成の詳細は、A.9項「JavaScriptライブラリのパーティション化の使用」を参照してください。

A.2.3.15 フレームバスティング

アプリケーションでフレームバスティングを使用するには、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という名前のページがあるとします。外部のDomainBpage1DomainApage1ページのクリックジャックを試行するとします。結果は次のようなウィンドウ階層になります。

  • DomainBpage1

    • DomainApage1

      • DomainApage2

アプリケーションでdifferentOriginにフレームバスティングが設定されていれば、フレームワークは親ウィンドウ階層をたどって、任意の祖先ウィンドウが別のドメインから引き出されているかどうかを判断できます。DoaminBpage1は別のドメインから派生しているため、DomainApage1ページに対してフレームバスティングJavaScriptコードが実行され、トップレベル・ウィンドウが表示されます。DomainApage2は同じドメインから派生しているため、DomainApage1はフレーム内での実行が許可されます。

有効な値は次のとおりです。

  • always: フレームでの実行が試行されると常にエラーが表示されリダイレクトします。

  • differentOrigin: 別のドメインから派生したページでフレームの実行が試行される場合のみ、エラーが表示されリダイレクトします(デフォルト)。

  • never: 任意の派生元ドメインの任意のフレームでページを実行できます。


    注意:

    次のコンテキスト・パラメータのいずれかをtrueに設定すると、このコンテキスト・パラメータは無視され、neverに設定した場合と同様に動作します。

    • org.apache.myfaces.trinidad.util.
      ExternalContextUtils.isPortlet

    • oracle.adf.view.rich.automation.ENABLED


A.2.3.16 バージョン番号情報

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に設定します。


注意:

本番環境においては、セキュリティ問題を回避するため、このパラメータをtrueに設定します。開発環境においてデバッグ目的でのみ、falseと設定します。


A.2.3.17 自動生成コンポーネントIDの抑制

プログラムでaf:outputTextまたはaf:outputFormattedコンポーネントを部分ターゲットとして(addPartialTarget()へのコールを使用して)追加する際は、autoに設定されたoracle.adf.view.rich.SUPPRESS_IDSコンテキスト・パラメータを使用します。

デフォルトでは、このパラメータはexplicitに設定されているため、次のいずれかに当てはまる場合を除き、自動生成されたコンポーネントIDと明示的に設定されたコンポーネントIDの両方を抑制することでコンテンツ・サイズが削減されています。

  • コンポーネントのpartialTriggers属性が設定されている場合

  • clientComponenttrueに設定されている場合

addPartialTarget()へのコールでは、partialTriggers属性が設定されておらず、部分ページ・レンダリングは成功しません。これらのコンポーネントの自動生成されたコンポーネントIDのみを抑制する場合は、パラメータをautoに設定します。

A.2.3.18 ADF Facesキャッシング・フィルタ

ADF Facesキャッシング・フィルタ(ACF)は、イメージ、スタイルシート、.pdf.zipファイルといったドキュメントなどの静的アプリケーション・オブジェクトのキャッシング(または圧縮、あるいはその両方)を有効にすることで、Webアプリケーションのパフォーマンスを上げる場合に使用可能なJava EEサーブレット・フィルタです。これらのオブジェクトは、Oracle Web CacheやOracle Traffic Directorなどの外部Webキャッシュまたはブラウザ・キャッシュでキャッシュされます。コンテンツのキャッシュ可能性は、主に、Webキャッシュ管理者が定義するURLベースのルールで決まります。ADFアプリケーション管理者または作成者はACFを使用して、adf-config.xmlファイルに直接キャッシング・ルールを定義できます。キャッシング・ルールの定義方法の詳細は、A.4.2項「ADF Faces Caching Filterへのキャッシング・ルールの定義」を参照してください。

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に定義されたキャッシング・ルールがブラウザのキャッシュに適用されます。ACFがURLリクエスト・パスに含まれるように構成するには、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サーブレット・フィルタを最初のフィルタにする必要があります。


A.2.3.19 コマンド・リンクへのネイティブのブラウザ・コンテキスト・メニューの構成

リンクをレンダリングするADF Facesコマンド・コンポーネントのコンテキスト・メニューを表示するには、oracle.adf.view.rich.ACTION_LINK_BROWSER_CONTEXT_SUPPRESSIONパラメータを使用してエンド・ユーザーのブラウザの有効または無効を切り替えます。コンテキスト・メニューにより、コマンド・コンポーネントに指定されている別のアクション(新しいウィンドウにリンクを開くなど)を起動するメニュー・オプションが提供されます。

このパラメータはデフォルトでyesに設定されているため、ADF Facesコマンド・コンポーネントのコンテキスト・メニューはレンダリングされません。パラメータをnoに設定すると抑制を無効化することができ、ネイティブのブラウザ・コンテキスト・メニューが表示されます。この機能を構成できるADF Facesコマンド・コンポーネントの詳細は、第18章「コマンド・リンクのブラウザのコンテキスト・メニューの構成」を参照してください。

A.2.3.20 Internet Explorer互換性ビュー・モード

ADF Facesアプリケーションを、Microsoft Internet Explorerの互換モードで実行すると、予測できない動作を引き起こす可能性があります。デフォルトでは、ユーザーがADF Facesアプリケーションにアクセスし、Internet Explorerブラウザが互換性モードに設定されている場合、ADF Facesはユーザーにこのモードの無効化を求めるアラートを表示します。

oracle.adf.view.rich.HIDE_UNSUPPORTED_BROWSER_ALERTSコンテキスト・パラメータをIECompatibilityModesに設定して、ユーザーにこのメッセージを非表示にします。


注意:

このメッセージが非表示見になっていても、oracle.adf.view.rich.LOGGER_LEVELパラメータがWARNINGかより詳細レベルに設定されている場合は、警告レベルのログ・メッセージがJavaScriptログにレポートされます。詳細は、A.2.3.2項「デバッグ」を参照してください。


A.2.3.21 セッション・タイムアウトの警告

サーバーにリクエストが送信されると、セッション・タイムアウト値がページに記述され、コンテキスト・パラメータ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分を超えるように設定する必要があります。そうしなければ、機能は無効になります。

A.2.3.22 HTTPストリーミングにおけるJSPタグの実行

JSPページの処理中に、HTTPストリーミング・リクエストでのJSPタグの実行を有効化または無効化するには、oracle.adf.view.rich.tag.SKIP_EXECUTIONパラメータを使用します。Faceletsの処理は含まれません。

デフォルトでは、このパラメータはstreamingに設定されており、ストリーミング・リクエスト中のJSPタグの実行はスキップされます。ストリーミング・リクエストにタグの実行が必要な場合に、リクエストごとにJSPタグを実行するには、パラメータをoffに設定します。

A.2.3.23 スプラッシュ画面

図A-1に示すように、ページがロードしているときにデフォルトで表示されるスプラッシュ画面の有効または無効を切り替えるには、oracle.adf.view.rich.SPLASH_SCREENパラメータを使用します。

図A-1

回転するOのスプラッシュ画面

このパラメータは、デフォルトでonに設定されています。スプラッシュ画面が表示されないようにするには、offに設定します。

A.2.3.24 グラフとゲージのイメージ形式

グラフ・コンポーネントとゲージ・コンポーネントのデフォルトの出力形式を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です。

A.2.3.25 レイアウトと表コンポーネントの形状管理

特定のレイアウト・コンポーネントや表がどのように拡大処理されるかをグローバルにコントロールする場合、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータを追加します。

特定のレイアウト・コンポーネント(af:decorativeBox, af:panelAccordion, af:panelDashboard, af:panelStretchLayout, af:panelSplitter, af:panelTabbed)が拡大できるかどうかは、dimensionsFrom属性の値に基づきます。これらのコンポーネントのデフォルトの設定はparentで、これはコンポーネンントのサイズが次の順序で決まることを意味します。

  • inlineStyle属性から。

  • inlineStyleに値がない場合は、サイズは親コンテナにより決まります(すなわち、コンポーネントは拡大します)。

  • 親コンテナが構成されていないか、その子を拡大できない場合は、サイズがスキンによって決定されます。

しかし、コンポーネントが常にautodimensionsFrom属性の値として使用することをユーザーが望む場合は(すなわち、コンポーネントはその親コンポーネントが子の拡大を可能としている場合は拡大し、そうでない場合は、コンポーネントのサイズはその子コンポーネントに基づく)、ユーザーは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に設定します。

A.2.4 web.xmlのその他のコンテキスト・パラメータに関する必知事項

アプリケーション全体に関わるその他のオプションのコンテキスト・パラメータは次のとおりです。

  • javax.faces.CONFIG_FILE: 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サーブレットに対する接頭辞マッピング(/facesなど)を使用する場合、このパラメータ値は無視されます。これはデフォルトで行われます。


  • javax.faces.LIFECYCLE_ID: javax.faces.lifecycle.LifecycleFactory.DEFAULT_LIFECYCLE定数によるデフォルト設定以外のライフサイクル識別子を指定します。


    注意:

    LIFECYCLE_IDを他の値に設定すると、ADF Facesが機能しません。


  • org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION: 実行時の変更の表示に、JSPファイルとCSSファイルで再起動が必要かどうかを指定します。デフォルトではfalseに設定されています。サーバーを再起動せずに変更を表示できるようにする場合は、trueに設定します。

A.3 faces-config.xmlでの構成

JSF構成ファイルには、JSFアプリケーションのリソース(カスタム・バリデータ、マネージドBeanなど)を登録し、ページ間のナビゲーション・ルールをすべて定義します。JSF構成ファイル名は、アプリケーションで任意の名前にできますが、通常、faces-config.xmlファイルです。小規模なアプリケーションには、通常faces-config.xmlファイルが1つ含まれます。

アプリケーションでADF Facesコンポーネントを使用する場合、JDeveloperにより、必要な構成要素がfaces-config.xmlに自動で追加されます。faces-config.xmlファイルの詳細は、Sun社のWebサイト(http://java.sun.com)の「Java EE 5 tutorial」を参照してください。

A.3.1 faces-config.xmlでのADF Facesの構成方法

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>

通常、次のものをfaces-config.xmlで構成します。

  • メッセージ・バンドル、サポートされているロケールなどのアプリケーション・リソース

  • ページ間のナビゲーション・ルール

  • カスタム・バリデータおよびコンバータ

  • データを保持および処理、UIイベントの処理およびビジネス・ロジックの実行用マネージドBean


注意:

アプリケーションでADF Controllerを使用する場合、これらの項目はadfc-config.xmlファイルで構成されます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「ADFタスク・フローのスタート・ガイド」を参照してください。


JDeveloperでは、宣言的概要エディタを使用してfaces-config.xmlファイルを変更できます。JSF構成要素に精通している場合は、XMLエディタを使用してコードを直接編集できます。

faces-config.xmlを編集する手順:

  1. アプリケーション・ナビゲータで、faces-config.xmlをダブルクリックし、ファイルを開きます。

    JDeveloperでは、faces-config.xmlはデフォルトでは概要エディタで開きます。これは、エディタ・ウィンドウの下部の「概要」タブがアクティブなことで示されます。

    概要エディタを使用してマネージドBeanやバリデータなどを宣言的に追加すると、JDeveloperでfaces-config.xmlファイルが自動的に更新されます。

  2. faces-config.xmlのXMLコードを直接編集するには、エディタ・ウィンドウの下部の「ソース」をクリックします。

    XMLエディタで要素を編集すると、JDeveloperで変更が概要エディタに反映されます。


ヒント:

JSFでは、1つのfaces-config.xmlファイルに複数の<application>要素を使用できます。JSF構成エディタの「概要」モードでは、ファイルの最初の<application>インスタンスの編集のみが許可されます。その他の<application>要素については、XMLエディタを使用してファイルを直接編集する必要があります。


A.4 adf-config.xmlでの構成

adf-config.xmlファイルは、セキュリティ、キャッシュ、変更永続性などのアプリケーション全体の機能の構成に使用されます。他のOracleコンポーネントもこのファイルでプロパティを構成します。

A.4.1 adf-config.xmlでのADF Facesの構成方法

アプリケーションの構成を行う前に、まず、adf-config.xmlファイルを作成する必要があります。その後、アプリケーションで使用するアプリケーション全体のADF機能の構成を追加できます。

adf-config.xmlを作成および編集する手順:

  1. プロジェクト用のMETA-INFディレクトリの作成がまだの場合は、これを作成します。

  2. META-INFディレクトリを右クリックし、「新規」を選択します。

  3. 「新規ギャラリ」で、「一般」を展開し、「XML」「XMLドキュメント」を選択して、「OK」をクリックします。


    ヒント:

    「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。


  4. ファイル名にadf-config.xmlと入力し、META-INFディレクトリに保存します。

  5. ソース・エディタで、生成されたコードを例A-6のコードに置き換えます。

    例A-6 adf-config.xmlファイルのXML

    <?xml version="1.0" encoding="utf-8" ?>
    <adf-config xmlns="http://xmlns.oracle.com/adf/config"
                xmlns:ads="http://xmlns.oracle.com/adf/activedata/config">
     
    </adf-config>
    
  6. これで、使用する機能の構成に必要な要素を追加できます。

A.4.2 ADF Faces Caching Filterへのキャッシング・ルールの定義

ADF Facesキャッシング・フィルタ(ACF)のキャッシング・ルールは、Webアプリケーションの.adf/META-INFディレクトリにあるadf-config.xmlファイルで定義されます。これらのURLの一致ルールに対して、ACFがリクエスト・パスに含まれるように構成する必要があります。ACFサーブレット・フィルタ定義の詳細は、第A.2.3.18項「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キャッシング・ルールの要素および属性

ルール要素の子 属性の説明および値

<cache>

オブジェクトをWebキャッシュにキャッシュする必要があるかどうかを指定します。値をfalseにするとオブジェクトはキャッシュされません。デフォルトはtrueです。

<duration>

オブジェクトがWebキャッシュにキャッシュされる期間を秒単位で定義します。デフォルトは300秒です。

<agent-caching>

Webキャッシュがない場合にブラウザ・キャッシュを使用するには、trueの値を指定します。

<agent-duration>

オブジェクトがブラウザ・キャッシュにキャッシュされる期間を秒単位で定義します。デフォルトは-1です。<agent-caching>true<agent-duration>が定義されていない場合は、<duration>の値がかわりに使用されます。

<compress>

Webキャッシュにキャッシュされたオブジェクトを圧縮する必要があるかどうかを指定します。デフォルト値はtrueです。

<cache-key-pattern>

ルールに一致するURLを決定します。リクエストURLのファイル拡張子またはパス接頭辞に、<cache-key-pattern>要素を1つのみ定義する必要があります。*.の値で始まる<cache-key-pattern>の値はファイル拡張子マッピングとして使用され、その他はパス接頭辞マッピングとして使用されます。

<search-key>
<key>

キャッシュされたオブジェクトにタグ付けされている検索キーを定義します。各<caching-rule>に、子の<key>要素が1つ以上ある<search-key>要素を1つ定義できます。検索キーの値は、キャッシュされたコンテンツの無効化に使用されます。アプリケーションに関連するすべてのリソースを識別するために、デフォルトの<search-key>が、実行時にアプリケーションのコンテキスト・ルートに追加されます。

<varyBy>
<vary-element>
<vary-name>
<vary-type>

Webキャッシュにキャッシュされたオブジェクトのバージョニングに使用されます。<varyBy>要素には、キャッシュされたオブジェクトをバージョニングするためのパラメータを定義する<vary-element>要素を1つ以上指定できます。静的リソースの大部分には、この定義は不要です。

<vary-element>は、次の内容で定義されます。

  • <vary-name>: 有効な値は、cookieName (Cookieの名前で、この値によってレスポンスが変わる)か、headerName (HTTPヘッダーの名前で、この値によって、Webキャッシュにキャッシュされたオブジェクトのバージョンが決定される)です。

  • <vary-type>: 有効な値はcookieまたはheaderです。

Webキャッシュにより、リクエスト・パラメータが自動的にバージョニングされます。リクエスト・パラメータに基づき、オブジェクトの複数のバージョンがWebキャッシュに格納されます。


A.4.3 コンポーネント出力形式としてのFlashの構成

アプリケーションではデフォルトで、各コンポーネントに指定されている出力形式が使用されます。たとえば、ADFデータ視覚化コンポーネントを使用するアプリケーションは、アニメーションと対話効果をWebブラウザに表示するFlash出力形式を指定します。コンポーネントの出力形式がFlashで、AppleのiOSオペレーティング・システムのように、ユーザーのプラットフォームでFlash Playerがサポートされていない場合は、出力形式は使用可能な最善のフォールバックに自動的にダウングレードされます。

adf-config.xmlflash-player-usageコンテキスト・パラメータを設定することで、アプリケーション全体のFlashコンテンツの使用を構成できます。有効な設定は次のとおりです。

  • 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を有効化するか無効化するかをアプリケーションで選択することが可能です。


注意:

これまで、データ可視化のdvt:graphおよびdvt:gaugeコンポーネントでは、imageFormat=AUTO"値が使用されていました。AUTO値は非推奨になったため、imageFormat="FLASH"の使用を設定し、flash-player-usageコンテキスト・パラメータをdowngradeに設定すると、アプリケーション全体で同じ効果を得ることができます。


A.4.4 コンテンツ配信ネットワークの使用

コンテンツ配信ネットワーク(CDN)では、ネットワークでのコンテンツへのアクセスがさらに効率的になることで、Webアプリケーションのパフォーマンスが向上します。アプリケーションでは、様々なCDN構成を使用してユーザー・エクスペリエンスを最適化できます。CDNを介してすべてのリクエストをルーティングする構成がよく利用されるようになっています。CDNは、クライアントとアプリケーションとの間のプロキシとして機能します。CDN固有の構成ツールを使用して、キャッシングや圧縮のルールを指定できます。

また、CDNからルーティングされるリクエストを制限する方法もあります。たとえば、予備リソース(イメージ、JavaScriptライブラリ、スタイルシートなど)のリクエストのみをCDNに誘導し、アプリケーション生成HTMLコンテンツのリクエストを直接処理できます。この場合、相対リソースURIを、CDNで処理されるホストを指し示す絶対URIに変換する必要があります。

たとえば、アプリケーション定義のイメージが、imagesというローカル・ディレクトリに保存されるとします。イメージを参照するコードは、例A-9のようになります。

例A-9 デフォルトのイメージ参照

<af:image source="/images/logo.png"
          shortDesc="My Company Logo"
          id="i1"/>

例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を設定する手順:

  1. adf-config.xmlファイルを作成するか開きます(詳細は、A.4.1項「adf-config.xmlでのADF Facesの構成方法」を参照)。

  2. 表A-2に示す要素を使用して、CDNの置換えURIを定義する書換えルールを作成します。


    注意:

    すべての属性値は、ELにバインドされます。ただし、ELにバインドされた属性の評価は一度のみです(解析時)。


    表A-2 CDN URI書換え要素

    要素 定義

    <adf-uri-rewrite-config>

    このxmlnsの値は、http://xmlns.oracle.com/adf/rewrite/configに設定する必要があります。

    <resource-uris>

    指定リソースのパスを書き換えるルールを定義します。

    <base-resource-uri>

    書き換えられたパスのベースURIを定義します。<base-resource-uri>要素を複数定義できます。この要素には次の3つの定義があります。

    • uri: CDNのURIを設定します。これは、指定リソースのURI全体の作成に使用されます。

    • secure-uri: URIがセキュアな場合の接頭辞(https://など)を設定します。

    • output-context-path: 書き換えられたURIでアプリケーションに固有のコンテキスト・パスを削除するかどうかを決定します。有効な値は、remove(デフォルト)またはpreserveです。

    <match-pattern>

    レンダリングされるリソースURIに対してテストされる正規表現。一致が見つかった場合、リソースURIの先頭には、<base-resource-uri>要素で指定されるURIが付けられます。各<base-resource-uri>要素には、複数の<match-pattern>要素を定義できます。

    実行時のオーバーヘッドを最小限に抑えるために、リソースURIの書換えの結果がキャッシュされることに注意してください。過度のキャッシュを防ぐには、<match-pattern>正規表現の対象を、静的リソースのみにします。動的に生成されるデータ中心リソース(バインドされていない問合せパラメータ値から生成されるリソースなど)は、ベース・リソースURIメカニズムを使用して書き換えないでください。

    <match-alias>

    ADF Facesで提供されるリソースのいずれかに一致するエイリアスを定義します。リソースは、次のいずれかになります。

    • af:documents: ADF FacesのHTMLリソースに一致します(blank.htmlなど)。

    • af:images: ADF FacesおよびTrinidadのイメージ・リソースに一致します。

    • af:coreScripts: ADF FacesのブートおよびコアJavaScriptライブラリに一致します。

    • af:skins: スキン生成スタイルシートに一致します。

    <base-resource-uri>要素に、複数の<match-alias>要素を定義できます。


    一致要素に指定された値は、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>
    

A.4.4.1 スキン・スタイルシートおよびCDNに関する必知事項

af:skinsエイリアスを使用して、CDNを指し示すようにスキン・スタイルシートを書き換えることができますが(CDNはアプリケーション・サーバーにリクエストをプロキシするように構成される)、アプリケーションがクラスタまたはロードバランスされた環境(あるいはその両方)で実行している場合、問題が生じることがあります。

スキン・スタイルシートは、包含ページ・コンテンツをレンダリングしたサーバーに生成されて格納されます。CDNを介してスタイルシート・リクエストをルーティングすることで、サーバー・アフィニティが失われる可能性があります(たとえば、CDNが別のドメインで機能する場合、セッションCookieが失われます)。その結果、スタイルシート・リクエストは、リクエストしたスタイルシートをまだ生成していないサーバーにルーティングされます。このような場合、スタイルシート・リクエストは正常に完了しません。

ロードバランス環境またはクラスタ化環境(あるいはその両方)で起こる可能性のある失敗を回避するには、Cookieまたはセッション・アフィニティが失われる場合、スキン・スタイルシートURIを書き換えないでください。

A.4.4.2 JavaScriptおよびCDNに関する必知事項

af:coreScriptsエイリアスを使用して、ADFの「コア」JavaScriptライブラリ(すべてのADFページにあるJavaScript)をCDNに書き換えることができます。また、<match-pattern>の正規表現を使用して、任意(アプリケーション定義など)のJavaScriptライブラリURIを書き換えることができます。ただし、JavaScriptライブラリがページに動的に導入されている場合(部分ページレンダリングの結果など)、いくつかの起源ポリシー制限が適用されます。その結果、クロスオリジン・ホストに書き換えられたJavaScriptライブラリURIはロードに失敗します。

JavaScriptライブラリURIの書換えを、af:coreScriptsで扱われるライブラリに制限し、アプリケーション提供ライブラリが既知の場合も、初期ページ・レンダーの一部(つまり、ライブラリはPPRリクエストの一部として導入されていない)として含まれるように制限する必要があります。

A.5 adf-settings.xmlでの構成

adf-settings.xmlファイルには、ADF Facesヘルプ・プロバイダ、キャッシュ/圧縮のルールなどのプロジェクトレベルおよびライブラリレベルの設定が含まれます。adf-settings.xmlファイルの構成設定は固定で、アプリケーションのデプロイ時やデプロイ後に変更できません。1つのアプリケーションには複数のadf-settings.xmlファイルが存在可能ですが、adf-settings.xmlファイルのユーザーは、その構成に関するコンテンツをマージする責任を持ちます。

A.5.1 adf-settings.xmlでのADF Facesの構成方法

アプリケーションの構成を行う前に、まず、adf-settings.xmlファイルを作成する必要があります。その後、アプリケーションで使用するプロジェクトの機能の構成を追加できます。このファイルでの構成の詳細は、A.5.2項「adf-settings.xmlの要素に関する必知事項」を参照してください。

adf-settings.xmlを作成および編集する手順:

  1. adf-settings.xmlファイルはMETA-INFディレクトリに存在する必要があります。ディレクトリを作成する場所は、adf-settings.xmlファイルを使用するプロジェクトのデプロイ時の計画によって異なります。

    • プロジェクトをアプリケーションのEARファイルでデプロイする場合、META-INFディレクトリを/application_name/.adfディレクトリに作成します。

    • プロジェクトにadf-settings.xmlファイルへの依存性があり、アプリケーションと別にデプロイされる可能性がある場合(たとえば、ADFライブラリでデプロイされるバインドされたタスク・フローなど)、META-INFディレクトリをビュー・プロジェクトの/srcディレクトリに作成します。


      ヒント:

      アプリケーションでOracle ADFモデルを使用している場合、META-INFディレクトリを/adfmsrcディレクトリに作成できます。


  2. JDeveloperで、「ファイル」→「新規」の順に選択します。

  3. 「新規ギャラリ」で、「一般」を展開し、「XML」「XMLドキュメント」を選択して、「OK」をクリックします。


    ヒント:

    「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。


  4. ソース・エディタで汎用コードを例A-15に示すコードに置き換えます。Webアプリケーション・ルートに対する正しい設定を使用します。

    例A-15 adf-settings.xmlファイルのXML

    <adf-settings xmlns="http://xmlns.oracle.com/adf/settings"
                  xmlns:wap="http://xmlns.oracle.com/adf/share/http/config" >
      <wap:adf-web-config xmlns="http://xmlns.oracle.com/adf/share/http/config">
        <web-app-root rootName="myroot" />
      </wap:adf-web-config>
    </adf-settings>
    
  5. これで、使用する機能の構成に必要な要素を追加できます。詳細は、A.5.2項「adf-settings.xmlの要素に関する必知事項」を参照してください。

  6. 手順1で作成したMETA-INFディレクトリに、ファイルをadf-settings.xmlとして保存します。

A.5.2 adf-settings.xmlの要素に関する必知事項

adf-settings.xmlファイルでは次の構成要素がサポートされています。

A.5.2.1 ヘルプ・システム

次の要素を使用して、ヘルプ・システムで使用されるヘルプ・プロバイダを登録します。

  • <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>

A.5.2.2 キャッシング・ルール

アプリケーション固有のライブラリおよびJARには、ファイルのキャッシングまたは圧縮(あるいはその両方)を必要とする様々なリソースが含まれています。ライブラリまたはJARが複数ある場合は、アプリケーションに、一致URLに基づいて様々なキャッシング・ルールを含む1つ以上のadf-setting.xmlファイルが存在することがあります。キャッシング・ルールは、実行時に順序付けられたリストにマージされます。リソースに対するリクエストが複数のキャッシング・ルールに一致する場合は、リストでの順序が先のルールが優先されます。

ADF Faces JARには、.js.css、イメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれます。これらの固定ルールはadf-settings.xmlファイルに定義されており、アプリケーションのデプロイ中やデプロイ後には変更できません。アプリケーション開発者は、adf-config.xmlファイルにアプリケーション・キャッシング・ルールを定義でき、このルールはadf-settings.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>

A.6 trinidad-config.xmlでの構成

ADF Facesコンポーネントを使用してJSFアプリケーションを作成する場合、ADF Facesの機能(スキン・ファミリ、ページ・アクセシビリティ・サポートのレベルなど)をtrinidad-config.xmlファイルで構成します。faces-config.xml同様、trinidad-config.xmlは、JSF式言語(EL)または静的値を使用して要素プロパティを定義できる単純なXML構造を持ちます。

A.6.1 trinidad-config.xmlでのADF Facesの機能の構成方法

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-fxsimpleあるいはカスタム・スキンに変更できます。カスタム・スキンを使用する場合は、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を編集する手順:

  1. アプリケーション・ナビゲータでtrinidad-config.xmlをダブルクリックし、XMLエディタにファイルを開きます。

  2. 要素名に精通している場合は、エディタに入力します。そうでない場合は、構造ウィンドウを使用して挿入します。

  3. 構造ウィンドウで次のようにします。

    1. 「前に挿入」または「後ろに挿入」メニューから選択する要素を右クリックし、挿入する要素をクリックします。

    2. 構造ウィンドウで新しく挿入された要素をダブルクリックし、プロパティ・インスペクタで開きます。値を入力するか、ドロップダウン・リスト(使用できる場合)から選択します。

      ほとんどの場合、JSF EL式(#{view.locale.language=='en' ? 'minimal' : 'skyros'}など)、あるいは静的値(たとえば、<debug-output>true</debug-output>)を入れることができます。EL式は、リクエストごとに動的に再評価され、適切なオブジェクト(ブール・オブジェクトなど)を戻す必要があります。

使用できる構成要素のリストは、A.6.2項「trinidad-config.xmlの要素に関する必知事項」を参照してください。

trinidad-config.xmlファイルの構成後、プログラムから、あるいはJSF EL式を使用してプロパティ値を取得できます。詳細は、A.8項「RequestContext EL暗黙オブジェクトの使用」を参照してください。

A.6.2 trinidad-config.xmlの要素に関する必知事項

すべてのtrinidad-config.xmlファイルは、http://myfaces.apache.org/trinidad/config XMLネームスペースの<trinidad-config>要素で始まる必要があります。<trinidad-config>内の要素の順序は任意です。要素のインスタンスを複数含めることができます。

A.6.2.1 アニメーションの有効化

一部のADF Facesコンポーネントでは、レンダリング時にアニメーションが使用されます。たとえば、ツリーおよびツリー表でノードを展開および縮小する際、アニメーションが使用されます。次のコンポーネントでレンダリング時にアニメーションが使用されます。

  • ファセットを公開および非公開にする場合の表の詳細ファセット

  • ノードを展開および縮小する際のツリーおよびツリー表

  • メニュー

  • ポップアップ・セレクタ

  • ダイアログ

  • ノート・ウィンドウおよびメッセージの表示

使用されるアニメーションのタイプとタイミングは、アプリケーションのスキンの一部として構成されます。詳細は、第20章「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。

animation-enabled要素はtrueまたはfalseに設定できます。また、trueまたはfalseに解決されるEL式を使用できます。


注意:

アニメーションを有効化すると、パフォーマンスに影響します。詳細については、Oracle Fusion Middlewareパフォーマンスおよびチューニング・ガイドの「Oracle Application Development Frameworkのパフォーマンス・チューニング」の項を参照してください。


A.6.2.2 スキン・ファミリ

A.6.1項「trinidad-config.xmlでのADF Facesの機能の構成方法」での説明のとおり、JDeveloperでは、ADF Facesを使用するJSFアプリケーションにskyrosスキン・ファミリがデフォルトで使用されます。<skin-family>の値をfusion-fxsimpleに変更することも、カスタム・スキン定義に変更することもできます。カスタム・スキンの作成および使用の詳細は、第20章「スタイルおよびスキンを使用した外観のカスタマイズの概要」を参照してください。

次のコードに示すように、スキン・ファミリ値にEL式を使用できます。

<skin-family>#{prefs.proxy.skinFamily}</skin-family>

A.6.2.3 タイムゾーンおよび年

日付を処理して表示するためのタイムゾーンと、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式を使用できます。

A.6.2.4 拡張デバッグ出力

デフォルトでは、<debug-output>要素はfalseです。<debug-output>trueに設定すると、ADF Facesでデバッグ出力が拡張されます。デバッグ出力に次の機能が追加されます。

  • 自動インデント

  • HTMLのブロックを処理したコンポーネントを識別するコメント。

  • 対応していない要素、1つの要素内での同じ属性の繰り返しの使用またはその他の不適切なマークアップの問題の検出。

  • 一般的なHTMLエラー(他の<form>タグ内の<form>タグ、無効な場所に使用されている<tr>タグや<td>タグなど)の検出。


パフォーマンスのヒント:

デバッグはパフォーマンスに影響します。本番環境ではこのパラメータをfalseに設定します。


A.6.2.5 ページ・アクセシビリティ・レベル

<accessibility-mode>を使用して、アプリケーションでのアクセシビリティ・サポートのレベルを定義します。サポートされている値は次のとおりです。

  • default: 出力でアクセシビリティ機能がサポートされます。

  • inaccessible: 出力サイズを最適化するため、アクセシビリティ固有の構成要素は削除されます。

  • screenReader: スクリーン・リーダーを使用する際の動作を改善するために、アクセシビリティ固有の構成が追加されます。


    注意:

    スクリーン・リーダー・モードは、他のユーザーには使用しにくくなる場合があります。たとえば、アクセシビリティ・モードがスクリーン・リーダー・モードに設定されていると、アクセス・キーは表示されません。


<accessibility-profile>を使用して、アプリケーションで使用する色のコントラストやフォント・サイズを構成します。サポートされている値は次のとおりです。

  • high-contrast: デフォルト・コントラストではなく高コントラストを使用してアプリケーションが表示されます。

  • large-fonts: デフォルト・サイズのフォントではなく大きいフォントを使用してアプリケーションが表示されます。

複数の設定を使用するには、値を空白で区切ります。

A.6.2.6 言語読取り方向

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>

A.6.2.7 通貨コードおよび数値の桁/小数点の区切り文字

通貨フィールドの書式設定に使用する通貨コードを指定する場合、および数値の桁と小数点に使用する区切り記号を定義する場合、次の要素を使用します。

  • <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>
    

A.6.2.8 日付と数値ロケールの書式設定

ADF FacesおよびMyFaces Trinidadは、デフォルトでは、ローカライズされたテキストに使用されているのと同じロケール(デフォルトではブラウザのロケール)で、日付(週の最初の曜日も)と数値を書式設定します。ただし、その他のロケールで日付と数値を書式設定する場合は、IANA形式のコード(ja、fr-CAなど)を値とする<formatting-locale>要素を使用できます。この要素の内容は、IANA文字列を指すEL式またはjava.util.Localeオブジェクトです。

A.6.2.9 出力モード

ADF Facesで使用される出力モードを変更するには、次のいずれかの値を使用して<output-mode>要素を設定します。

  • default: デフォルト・ページ出力モード(通常、表示)。

  • printable: 印刷可能ページに適した出力モード。

  • email: ページのコンテンツを電子メールするのに適した出力モード。

A.6.2.10 アクティブなPageFlowScopeインスタンスの数

ADF Facesのデフォルトでは、アクティブなPageFlowScopeインスタンスの最大数が常に15に設定されます。この数を変更するには、<page-flow-scope-lifetime>要素を使用します。その他の要素とは違い、静的な値を使用する必要があり、EL式はサポートされていません。

A.6.2.11 カスタム・ファイル・アップロード・プロセッサ

大半のアプリケーションでは、ADF Facesで用意されているデフォルトのUploadedFileProcessorインスタンスを置き換える必要はありません。しかし、アプリケーションで非常に大きなファイルのアップロードをサポートする必要がある場合、またはファイルのアップロードに大きく依存する場合、デフォルト・プロセッサをカスタムUploadedFileProcessor実装で置き換えることができます。

たとえば、ADF Facesでリクエスト時に一時格納を処理するかわりに、最終的な格納場所にファイルを即座に格納する実装を使用することにより、パフォーマンスを向上させることができます。デフォルト・プロセッサを置き換えるには、次のコードに示すように、<uploaded-file-processor>要素を使用してカスタム実装を指定します。

<uploaded-file-processor>
 com.mycompany.faces.myUploadedFileProcessor
</uploaded-file-processor>

A.6.2.12 クライアント側検証および変換

ADF Facesのバリデータとコンバータでは、サーバー側の検証および変換と同様に、クライアント側の検証および変換がサポートされます。ADF Facesのクライアント側のバリデータおよびコンバータは、サーバー側のバリデータおよびコンバータと同じように動作しますが、クライアントではJavaScriptが使用されます。

JavaScript対応のバリデータとコンバータは、フォームの送信時にクライアントで実行されるため、サーバーへのラウンドトリップなしにエラーが捕捉されます。

リッチ・クライアント版のADF Facesでは、<client-validation-disabled>構成要素はサポートされていません。つまり、ADF Facesアプリケーションでは、クライアント側検証と変換を無効にできません。

A.7 trinidad-skins.xmlでの構成

JDeveloperでは、ADF Facesコンポーネントを使用してJSFページを作成する場合、skyrosスキン・ファミリがデフォルトで使用されます。A.6.1項「trinidad-config.xmlでのADF Faces機能の構成方法」で説明されているように、スキン・ファミリは、trinidad-config.xmlファイルに構成されています。アプリケーションでカスタム・スキンを使用する場合は、アプリケーションへのカスタム・スキンの登録に使用するtrinidad-skins.xmlファイルを作成します。

カスタム・スキンの作成の詳細は、第20章「スタイルおよびスキンを使用した外観のカスタマイズの概要」を参照してください。

A.8 RequestContext EL暗黙オブジェクトの使用

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暗黙的オブジェクト・プロパティを使用できます。

プロパティの完全なリストは、org.apache.myfaces.trinidad.context.RequestContextJavadocを参照してください。


注意:

リクエストごとに、org.apache.myfaces.trinidad.context.RequestContextクラスのインスタンスが1つ存在します。RequestContextクラスは、JSF FacesContextクラスを拡張しません。

構成プロパティをプログラムで取得するには、次のコードに示すように、まず、静的getCurrentInstance()メソッドをコールしてRequestContextオブジェクトのインスタンスを取得し、目的のプロパティを取得するメソッドをコールします。

RequestContext context = RequestContext.getCurrentInstance();

// Get the time-zone property
TimeZone zone = context.getTimeZone();

// Get the right-to-left property
if (context.isRightToLeft())
{
  .
  .
  .
}

A.9 JavaScriptライブラリのパーティション化の使用

ADF Facesは、そのコンポーネントのJavaScriptファイルをJavaScript機能にグループ化します。JavaScript機能は、その機能を記述する論理識別子に関連付けられたJavaScriptファイルのコレクションです。たとえば、panelStretchLayoutクライアント・コンポーネントは、次の2つのJavaScriptファイルで構成されます。

これらの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.14項「JavaScriptのパーティション化」を参照してください。

A.9.1 JavaScript機能の作成方法

adf-js-features.xml fileファイルを作成してから機能にエントリを追加することでJavaScript機能を作成できます。


注意:

カスタムADF Facesコンポーネントを作成する場合に、JavaScript機能を作成できます。すべての既存のADF Facesコンポーネントには、すでにそれらのコンポーネント向けに作成された機能があり、これらは変更できません。


JavaScript機能を作成する手順:

  1. コンポーネント用のMETA-INFディレクトリの作成がまだの場合は、これを作成します。

  2. META-INFディレクトリを右クリックし、ポップアップ・メニューから「新規」を選択します。

  3. 「新規ギャラリ」で、「一般」を展開し、「XML」「XMLドキュメント」を選択して、「OK」をクリックします。


    ヒント:

    「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。


  4. ファイル名にadf-js-features.xmlと入力し、META-INFディレクトリに保存します。

  5. ソース・エディタで、生成されたコードを例A-6のコードに置き換えます。

    例A-19 adf-js-features.xmlファイルのXML

    <?xml version="1.0" encoding="utf-8" ?>
    <adf-js-features xmlns="http://xmlns.oracle.com/adf/faces/feature"
     
    </adf-js-features>
    
  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>
    

A.9.2 JavaScriptパーティションの作成方法

adf-js-partitions.xmlファイルを作成してから機能にエントリを追加することでJavaScriptパーティションを作成できます。


注意:

ADF Facesには、デフォルトのadf-js-partitions.xmlファイルがあります(例A-23参照)。パーティションの構成を変更する場合は、独自の完全なadf-js-partitions.xmlファイルを作成する必要があります。実行時にフレームワークは、そのファイルのWEB-INFディレクトリを検索します。見つからない場合は、デフォルトのパーティション・ファイルがロードされます。


JavaScriptパーティションを作成する手順:

  1. WEB-INFディレクトリを右クリックし、ポップアップ・メニューから「新規」を選択します。

  2. 「新規ギャラリ」で、「一般」を展開し、「XML」「XMLドキュメント」を選択して、「OK」をクリックします。


    ヒント:

    「一般」ノードが表示されない場合、ギャラリの上部の「すべてのテクノロジ」タブをクリックします。


  3. ファイル名にadf-js-partitions.xmlと入力し、WEB-INFディレクトリに保存します。

  4. ソース・エディタで、生成されたコードを例A-6のコードに置き換えます。

    例A-21 adf-js-partitions.xmlファイルのXML

    <?xml version="1.0" encoding="utf-8" ?>
    <adf-js-partitions xmlns="http://xmlns.oracle.com/adf/faces/partition"
     
    </adf-js-partitions>
    
  5. 次の要素を追加すると、関連する機能とともにパーティションが移入されます。

    • partitions: 構成ファイルのルート要素です。

    • partition: partitions要素の子として作成されます。この要素には1つのpartition-name子要素および1つ以上のfeature要素が含まれている必要があります。

    • partition-name: partition要素の子として作成されます。パーティションの名前を指定します。この値は、このパーティションのJavaScriptライブラリに一意のURLを作成するために使用されます。

    • feature: partition要素の子として作成されます。このパーティションに含める機能を指定します。複数のfeature要素がある場合もあります。


    ヒント:

    adf-js-features.xmlファイルで構成され、パーティションに表示されない機能は、独自のパーティションに存在するものとして扱われます。


    例A-22に、AdfRichTree機能およびAdfRichTreeTable機能を含むtreeパーティションのpartition要素を示します。

    例A-22 JavaScriptパーティションの構成

    <partition>
      <partition-name>tree</partition-name>
      <feature>AdfUITree</feature>
      <feature>AdfUITreeTable</feature>
      <feature>AdfRichTree</feature>
      <feature>AdfRichTreeTable</feature>
    </partition>
    

A.9.3 adf-js-partitions.xmlファイルに関する必知事項

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>

A.9.4 実行時の処理: JavaScriptのパーティション化

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ドキュメントの末尾直前でレンダリングされます。