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

前
 
次
 

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 Fusion Middleware Developing Web Applications, Servlets, and JSPs for Oracle WebLogic Server』を参照してください。

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: アプリケーションのビューの状態の格納場所を指定します。この値はデフォルトではserverで、アプリケーションのビューの状態がサーバーに格納されます。ADF Facesを使用する場合は、javax.faces.STATE_SAVING_METHODclientに設定し、ビューの状態をブラウザ・クライアントに格納することをお薦めします。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フィルタに転送する他のフィルタに必要です。


    ヒント:

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


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

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: トークンベースのクライアント側状態保存が有効な場合、ユーザー1人につき一度に格納する必要があるトークンの数を指定します。デフォルトは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のいずれかのレベルを使用します。自動プロファイラ・インストルメンテーション・コードが有効(A.2.3.6項「プロファイリング」oracle.adf.view.rich.profiler.ENABLEDを参照)な場合、INFOに設定します。


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

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


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

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

  • 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: ファイル・アップロード中に一時ファイルを格納するディレクトリを指定します。デフォルトは、ユーザーの一時ディレクトリです。


注意:

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


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

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

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


    ヒント:

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



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

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


A.2.3.5 アサーション

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


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

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


A.2.3.6 プロファイリング

次のJavaScriptプロファイリング・コンテキスト・パラメータを指定できます。

  • oracle.adf.view.rich.profiler.ENABLED: JavaScript Profilerで用意されている自動プロファイラ・インストルメンテーション・コードを使用するかどうかを指定します。デフォルトは、falseです。JavaScriptプロファイルを有効にするにはtrueに設定します。プロファイラが有効な場合、各ページでプロファイラ・データをフェッチするために追加のラウンドトリップが必要になります。デフォルトでは、/WEB-INF/profiler.xml構成ファイルがJDeveloperで使用されます。profiler.xmlの場所をオーバーライドするには、次に説明するROOT_FILEコンテキスト・パラメータを使用します。DEBUG_JAVASCRIPTtrueに設定し、JavaScriptの曖昧化を無効にする場合もあります。LOGGER_LEVELを最低でもINFOに設定する必要もあります。

  • oracle.adf.view.rich.profiler.ROOT_FILE: 自動プロファイラ・インストルメンテーション・コードが有効の場合にロードする初期profiler.xmlファイルを指定します。ROOT_FILEが指定されていない場合、デフォルトでは、/WEB-INF/profiler.xmlファイルがJDeveloperで使用されます。

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の一部ではありません。


注意:

このコンテキスト・パラメータをtrueに設定すると、oracle.adf.view.rich.security.FRAME_BUSTINGコンテキスト・パラメータはneverに設定された場合と同じように動作します。詳細は、A.2.3.15項「フレームバスティング」を参照してください。


A.2.3.11 UIViewRootキャッシング

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 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: コマンド・コンポーネントのアクションでナビゲーションが生じる場合、コンポーネントのpartialSubmittrueに設定されているかのように、アクションは常にPPRを使用して提供されます。partialSubmitの詳細は、5.1.1項「イベントおよび部分ページ・レンダリング」を参照してください。コンポーネントですでにpartialSubmittrueに設定されている場合、フレームワークは何も実行しません。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 フレームバスティング

アプリケーションでフレームバスティングを使用するには、oracle.adf.view.rich.security.FRAME_BUSTINGコンテキスト・パラメータを使用します。フレームバスティングは、悪意のあるWebサイトが別のドメインのページをフレームに引き出して偽のページで覆い隠し、元のページの一部のみが表示されるようにしたり、クリックジャックされたページ(ボタンなど)が表示されるようにするクリックジャックを防ぐ方法です。ユーザーがボタンをクリックすると、実際はクリックジャックされたページでボタンをクリックしているため、予期しない結果になります。

たとえば、DomainAに存在するWebベースの電子メール・アプリケーションに対して、IFrameを使用してDomainAの電子メール・アプリケーションのページを指すページを作成してDomainBのWebサイトでページをクリックジャックするとします。2つのページを組み合せて、DomainBから引き出されたページがIFrameでページの大部分を占めるようにして、アカウントのすべての電子メールを削除するボタンのみが表示されるようにします。実際に電子メール・アプリケーション内で操作していることを知らないユーザーがボタンをクリックすると、意図せずにすべての電子メールが削除されることになります。

フレームバスティングは次のJavaScriptを使用して、アプリケーションのページがフレーム内で実行されるのをブロックし、クリックジャックを防ぎます。

top.location.href = location.href;

パラメータをalwaysに設定して、アプリケーションがフレームバスティングを使用するように構成すると、フレームでページの実行が試行されるたびに、ユーザーにはページがリダイレクトされているというアラートが表示され、JavaScriptコードが実行されてページが最上位と定義されるため、ページのフレーム内での実行が却下されます。

アプリケーションでフレームを使用する必要がある場合は、パラメータをdifferentDomainに設定できます。この設定ではフレームがアプリケーションとは別のドメインから引き出される場合のみフレームバスティングが使用されます。これがデフォルト設定です。


注意:

ページの起点は、ドメイン名、アプリケーション・レイヤー・プロトコル、ほとんどのブラウザでスクリプトを実行するHTMLドキュメントのTCPポートを使用して定義されます。これらすべての値が厳密に同じ場合のみ、ページは同じドメインから引き出されていると見なされます。


たとえば、DomainApage2ページを含むフレームを使用するアプリケーションにDomainApage1という名前のページがあるとします。外部のDomainBpage1DomainApage1ページのクリックジャックを試行するとします。結果は次のようなウィンドウ階層になります。

  • DomainBpage1

    • DomainApage1

      • DomainApage2

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

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

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

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

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


    注意:

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

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

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


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

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

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

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

  • clientComponent属性がtrueに設定されている。

addPartialTarget()を呼び出す場合、partialTriggers属性は設定されず、部分ページ・レンダーは成功しません。パラメータをautoに設定すると、このようなコンポーネントの自動生成コンポーネントIDのみを抑制できます。

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

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-2に、ACFサーブレット定義のサンプルを示します。

例A-2 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.18 コマンド・リンクのネイティブ・ブラウザ・コンテキスト・メニューの構成

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

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

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

リクエストがサーバーに送信されると、セッション・タイムアウト値がページに書き込まれ、セッション・タイムアウト警告の間隔がコンテキスト・パラメータoracle.adf.view.rich.sessionHandling.WARNING_BEFORE_TIMEOUTで定義されます。ユーザーは、警告ダイアログでセッションを延長することができ、セッションの期限が切れてページがリフレッシュされるときに通知が送信されます。アプリケーションのセキュリティ構成に応じて、セッションの期限が切れると、ユーザーはページのログにリダイレクトされます。

警告ダイアログが表示されてからセッション・タイムアウトまでの秒数を設定するには、oracle.adf.view.rich.sessionHandling.WARNING_BEFORE_TIMEOUTコンテキスト・パラメータを使用します。WARNING_BEFORE_TIMEOUTの値が120秒未満の場合、クライアントの状態保存がページに使用されるか、セッションが無効になっている場合、機能は無効になります。セッション・タイムアウト値は、セッションから直接取得されます。

例A-3に、セッションがタイムアウトするまで警告ダイアログが120秒表示される場合の構成を示します。

例A-3 セッション・タイムアウト警告の構成

<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.20 HTTPストリーミングでのJSPタグ実行

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

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

A.2.3.21 スプラッシュ画面

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

図A-1

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

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

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

グラフ・コンポーネントとゲージ・コンポーネントのデフォルトの出力形式を変更するには、oracle.adf.view.rich.dvt.DEFAULT_IMAGE_FORMATパラメータを使用します。このコンテキスト・パラメータは、新しいアプリケーションに自動で追加されます。このコンテキスト・パラメータがあり、imageFormat属性(グラフのみ)を指定していないアプリケーションは、デフォルトでHTML5に自動で設定されます。

デフォルトでは、このパラメータはFLASHに設定され、グラフとゲージはFlashプレーヤーを使用して表示されます。プラグインがクライアント・マシンで使用できない場合や双方向ロケールの場合のように、Flashプレーヤーが使用できないときは、パラメータをHTML5に設定することもできます。

A.2.4 web.xmlのその他のコンテキスト・パラメータについて

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

  • 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サーブレットに対する接頭辞マッピング(/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ファイルです。小規模なアプリケーションには、通常、1つのfaces-config.xmlファイルがあります。

アプリケーションで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-4に示すとおり、ADFコンポーネントのデフォルト・レンダー・キットがfaces-config.xmlファイルにJDeveloperで自動的に挿入されます。

例A-4 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コントローラを使用する場合、これらのアイテムはadfc-config.xmlファイルで構成されます。詳細は、『Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド』の「タスク・フローの概説」を参照してください。


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-5のコードに置き換えます。

    例A-5 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キャッシング・フィルタのキャッシング・ルールの定義

ADF Facesキャッシング・フィルタ(ACF)のキャッシング・ルールは、Webアプリケーションの.adf/META-INFディレクトリにあるadf-config.xmlファイルで定義されます。これらのURL一致ルールに対してリクエスト・パス内になるようにACFを構成する必要があります。ACFサーブレット・フィルタ定義の詳細は、A.2.3.17項「ADF Facesキャッシング・フィルタ」を参照してください。

1つ以上のキャッシング・ルールの単一ルート要素は、<caching-rules>です。これは、ネームスペースhttp://xmlns.oracle.com/adf/faces/config<adf-faces-config>要素の子として構成されます。

<caching-rule>要素は各キャッシング・ルールを定義し、それぞれのルールは構成ファイルのリスト順に評価されます。例A-6に、adf-config.xmlでキャッシング・ルールを定義する構文を示します。

例A-6 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キャッシュにキャッシュされたオブジェクトのバージョニングに使用されます。1つの<varyBy>要素には、キャッシュされるオブジェクトのバージョニングのパラメータを定義する<vary-element>要素を1つ以上入れることができます。ほとんどの静的リソースには、この定義は必要ありません。

それぞれの<vary-element>は、次のように定義されます。

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

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

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


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

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

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

  • downgrade: 出力形式がFlashであっても、Flash Playerを使用できない場合は、最適で利用可能な代替形式にダウングレードするように指定します。Flash Playerのダウンロードは求められません。

  • disable: アプリケーションでのFlashの使用を無効にするように指定します。Flash Playerをクライアントで使用できるかどうかに関係なく、すべてのコンポーネントは、Flash以外のバージョンでレンダリングされます。

例A-7に、adf-config.xmlでFlashをアプリケーション全体で無効にするための構文を示します。

例A-7 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-8のようになります。

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

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

例A-9に示すように、イメージをCDNから取得するには、イメージ・ソースの絶対URIを明示的に指定する方法があります。

例A-9 絶対URIを使用したCDNからのイメージ参照

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

この方法では、アプリケーションの多くの場所(すべてのイメージ参照の可能性がある)を更新する必要があるため、ページ間でCDNベースURIが重複してしまうマイナス面があります。これにより、CDN使用の有効/無効が切り替えられたり、CDNから別の極めて困難なCDNに切り替えられたりする可能性があります。

あるいは、例A-10に示すように、リソース関連属性をELでバインドする方法もあります。

例A-10 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-11では、イメージ・ディレクトリのすべてのpngイメージが、http://mycdn.com接頭辞を含めて書き換えられるように指定されています。

例A-11 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-12の構成では、http://mycdn.com/接頭辞を、ADF Facesコンポーネントで定義されるすべてのイメージに適用しています。

例A-12

  <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-13に、CDNを使用するように構成されるアプリケーションを示します。

    例A-13 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ファイルの構成設定は固定で、アプリケーションのデプロイ時やデプロイ後に変更できません。アプリケーションには複数のadf-settings.xmlファイルがある場合があります。ADF設定ファイルのユーザーは、これらの構成の内容をマージする必要があります。

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

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

adf-settings.xmlの作成と編集手順:

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

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

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


    ヒント:

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


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

    例A-14 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の要素について」を参照してください。

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-15に、登録されたヘルプ・プロバイダの例を示します。このケースでは、アプリケーションのヘルプ・プロバイダは1つのみのため、接頭辞を含める必要がありません。

例A-15 ヘルプ・プロバイダの登録

<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に基づいて様々なキャッシング・ルールを含めるadf-setting.xmlファイルを1つ以上入れることができます。キャッシング・ルールは、実行時に順序付リストにマージされます。リソースのリクエストが複数のキャッシング・ルールと一致した場合、リストの最初の該当ルールが優先されます。

ADF Faces JARには、.js.css、イメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれます。これらの固定ルールは、adf-settings.xmlファイルで定義されるため、アプリケーションのデプロイ時やデプロイ後に変更することはできません。アプリケーション開発者は、adf-settings.xmlで定義されるルールよりも優先されるadf-config.xmlファイルでアプリケーションのキャッシング・ルールを定義できます。例A-16に、ADF Faces JARのadf-settings.xmlファイルを示します。

例A-16 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-17に、trinidad-config.xmlの基礎ファイルを示します。

例A-17 JDeveloperによって作成されるtrinidad-config.xml基礎ファイル

<?xml version="1.0" encoding="windows-1252"?>
<trinidad-config xmlns="http://xmlns.oracle.com/trinidad/config">
 
  <skin-family>blafplus-rich</skin-family>
 
</trinidad-config>

JDeveloperでは、ADF Facesを使用するJSFアプリケーションに対して、blafplus-richスキン・ファミリがデフォルトで構成されます。これをblafplus-mediumsimpleに変更することも、カスタム・スキンを使用することもできます。カスタム・スキンを使用する場合は、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' : 'blafplus-rich'}など)または静的値(<debug-output>true</debug-output>など)を入力できます。EL式は、リクエストごとに動的に再評価され、適切なオブジェクト(Booleanオブジェクトなど)を戻す必要があります。

使用できる構成要素のリストは、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アプリケーション開発フレームワークのパフォーマンスのチューニングに関する項を参照してください。


A.6.2.2 スキン・ファミリ

A.6.1項「trinidad-config.xmlでのADF Facesの機能の構成方法」での説明のとおり、JDeveloperでは、ADF Facesを使用するJSFアプリケーションにblafplus-richスキン・ファミリがデフォルトで使用されます。<skin-family>の値をblafplus-mediumsimpleに変更することも、カスタム・スキン定義に変更することもできます。カスタム・スキンの作成および使用の詳細は、第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ページを作成する場合、blafplus-richスキン・ファミリがデフォルトで使用されます。スキン・ファミリは、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暗黙オブジェクトのプロパティを使用できます。

プロパティの一覧については、『Javadoc』「org.apache.myfaces.trinidad.context.RequestContext」を参照してください。


注意:

リクエストごとに、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-5のコードに置き換えます。

    例A-18 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-19に、ポップアップ・コンポーネントを使用し、ポップアップ機能への依存性を持つ架空のカスタム・コンポーネントのfeature要素を示します。

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


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

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

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


    ヒント:

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


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

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

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

    <?xml version="1.0" encoding="utf-8" ?>
    <adf-js-features 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-21に、AdfRichTree機能およびAdfRichTreeTable機能を含むtreeパーティションのpartition要素を示します。

    例A-21 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-22に、ADF Facesのデフォルトのadf-js-partitions.xmlファイルを示します。

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