RequestContext APIを使用してADF Faces構成値を取得する方法、およびJavaScriptのパーティション化の使用方法について説明します。
この付録の内容は次のとおりです。
JSF Webアプリケーションには、特定の構成ファイルのセット(web.xmlおよびfaces-config.xml)が必要です。ADF Facesアプリケーションでは、構成情報がadf-config.xmlファイルおよびadf-settings.xmlファイルにも格納されます。ADF FacesはMyFaces Trinidadと同じコード・ベースを共有するため、UIにADF Facesコンポーネントを使用するJSFアプリケーションでは、trinidad-config.xmlファイル(オプションでtrinidad-skins.xmlファイル)も含める必要があります。TrinidadとADF Facesとの関係の詳細は、「ADF Facesの概要」を参照してください。
JSFアプリケーションの構成の一部は、Java EEアプリケーション・デプロイメント・ディスクリプタ(web.xml)の内容で決まります。/WEB-INFディレクトリにあるweb.xmlファイルでは、サーバーが認識する必要のあるアプリケーションに関するすべての情報(JDeveloperで自動的に割り当てられる、あるいはアプリケーションのデプロイ時にシステム管理者によって割り当てられるルート・コンテキスト・パス以外)を定義する必要があります。web.xmlファイルでの典型的なランタイム設定には、初期化パラメータおよびセキュリティ設定があります。
ADF Facesを使用するすべてのアプリケーションに対する次の設定がweb.xmlファイルで構成されます。
clientに設定されたjavax.faces.STATE_SAVING_METHODコンテキスト・パラメータ
MyFaces Trinidadフィルタおよびマッピング
MyFacesTrinidadリソース・サーブレットおよびマッピング
JSFサーブレットおよびマッピング
注意:
ADF Facesコンポーネントをアプリケーションで最初に使用した際に、JDeveloperで、必要なADF Faces構成がweb.xmlファイルに自動的に追加されます。
必要な要素の詳細は、「web.xmlに必要な要素について」を参照してください。
web.xmlのADF Faces関連のオプションの構成要素の詳細は、「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
ADF Faces以外のweb.xmlの構成の詳細は、『Oracle WebLogic Server Webアプリケーション、サーブレット、JSPの開発』を参照してください。
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、デフォルト・サーブレットとマッピング要素を使用して、web.xmlの基礎ファイルが/WEB-INFディレクトリに作成されます。
プロジェクトでADF Facesコンポーネントを使用(ライブラリをインポートするだけでなく、コンポーネント・タグをページで使用)する場合、JDeveloperで、デフォルトJSF構成要素だけでなく、次のものもweb.xmlに自動的に追加されます。
MyFaces TrinidadフィルタおよびMyFaces Trinidadリソース・サーブレットに関連する構成要素
clientの値を持つjavax.faces.STATE_SAVING_METHODコンテキスト・パラメータ
アプリケーションでJSFフラグメントを使用するよう選択した場合、アプリケーションで.jsffファイルを認識および解釈するためのJSP構成要素が、JDeveloperで自動的に追加されます。
次の例に、JSF、ADF Facesおよび.jsffファイルを使用する場合にJDeveloperで追加されるデフォルト要素を持つweb.xmlファイルを示します。
JSFおよびADF Facesの処理に必要なweb.xml構成要素の詳細は、「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構成要素を追加する手順:
追加できるコンテキスト・パラメータの一覧は、「web.xmlのADF Facesコンテキスト・パラメータについて」を参照してください。
web.xmlに必要なJSFおよびADF Facesに関するアプリケーション全体の構成要素は次のとおりです。
コンテキスト・パラメータjavax.faces.STATE_SAVING_METHOD: アプリケーションのビューの状態の格納場所を指定します。デフォルトでは、この値はclientであり、アプリケーションのビュー状態がブラウザ・クライアントに格納されます。clientに設定した場合、ADF Facesでトークンベースのクライアント側の状態保存が自動的に使用されます。デフォルトの15を使用するかわりに、使用するトークンの数を指定できます。状態保存コンテキスト・パラメータの詳細は、「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ファイルがロードされます。
ADF Facesの構成オプションは、<context-param>要素を使用してweb.xmlに定義されます。次に例を示します。
<context-param> <param-name>oracle.adf.view.rich.LOGGER_LEVEL</param-name> <param-value>ALL</param-value> </context-param>
ADF Facesでは、次のコンテキスト・パラメータがサポートされています。
次の状態保存コンテキスト・パラメータを指定できます。
org.apache.myfaces.trinidad.CLIENT_STATE_METHOD: クライアント側状態保存がjavax.faces.STATE_SAVING_METHODを使用して有効になっている場合、使用するクライアント側状態保存のタイプを指定します。CLIENT_STATE_METHODの値は次のとおりです。
token: (デフォルト)ページの状態はセッションに格納しますが、トークンはクライアントに永続させます。HttpSessionオブジェクトに格納されている状態のブロックを識別するシンプル・トークンは、クライアントに格納されます。これにより、複数回表示される同一ページがADF Facesで明確になります。フェイルオーバーがサポートされます。
all: すべての状態情報がクライアントの(場合によっては非常に大きい)非表示のフォーム・フィールドに格納されます。これは、HttpSessionを使用しない開発者にとって有用です。
パフォーマンスに関するヒント
ただし、すべての状態情報を格納するとサイズが大きくなる可能性があることから、クライアント側状態保存をtokenに設定してください。
org.apache.myfaces.trinidad.CLIENT_STATE_MAX_TOKENS: トークンベースのクライアント側の状態保存が有効化されている場合に、ユーザーごとに一度に保存できるトークンの数を指定します。デフォルトは15です。トークンがこの数を超えると、表示頻度の最も低いページの状態が失われるため、「戻る」ボタンを頻繁に使用するユーザーや、同時に複数のウィンドウを開いているユーザーが影響を受けます。フレームへの依存度が高いHTMLアプリケーションを作成する場合は、この値を増やすことができます。
パフォーマンスに関するヒント
セッションごとの使用中メモリーを減らすには、この値を2に減らすことを検討してください。状態トークン・キャッシュを2に減らした場合、サポートされる「戻る」ボタンのクリック回数は1回になります。「戻る」ボタンがサポートされないアプリケーションについては、この値を1に設定してください。
org.apache.myfaces.trinidad.COMPRESS_VIEW_STATE: セッションで状態保存をグローバルに圧縮するかどうかを指定します。各ユーザー・セッションには、ライブ・メモリーを大量に消費する複数のpageStateオブジェクトが含まれていることがあり、その場合はパフォーマンスに影響があります。このオーバーヘッドは、セッション・レプリケーションの実行時に、クラスタリングではるかに大きな問題になる可能性があります。デフォルトはoffです。
パフォーマンスに関するヒント
データのサイズが圧縮されると、待機時間を減らすことができます。パフォーマンスを最適化するには、onに設定します。
次のデバッグ・コンテキスト・パラメータを指定できます。
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でJSFファイルとCSSファイルの更新日付が自動的に確認され、ファイルに変更があった場合、保存されている状態が破棄されます。
パフォーマンスに関するヒント
trueの場合、このCHECK_FILE_MODIFICATIONパラメータにより、アプリケーションのデプロイ時には不要となるオーバーヘッドが追加されます。アプリケーションを実行環境にデプロイする場合はfalseに設定します。
oracle.adf.view.rich.LOGGER_LEVEL: このパラメータでは、デフォルト・レンダー・キットがoracle.adf.richの場合、JavaScriptロギングを有効にします。デフォルトは、OFFです。JavaScriptロギングを有効にする場合、SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST、ALLのいずれかのレベルを使用します。
パフォーマンスに関するヒント
JavaScriptロギングはパフォーマンスに影響します。実行環境では、この値はOFFに設定します。
oracle.adf.view.rich.REQUEST_ID_TRACING: このパラメータは、エンド・ユーザー・レポートをサーバー側のログの対応するエントリに関連付けることで、失敗した部分ページ・レンダリング(PPR)リクエストの診断に使用されます。これは、サーバー・ログの一意のECIF番号をPPR URLに追加することで実行されます。このパラメータは、デフォルトではoffに設定されています。診断機能をアクティブ化するには、パラメータをPPRに設定します。
次のファイル・アップロード・コンテキスト・パラメータを指定できます。
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実装で置き換える場合、パラメータは処理されません。
次のものを指定できます。
org.apache.myfaces.trinidad.resource.DEBUG: リソース・デバッグ・モードが有効かどうかを指定します。デフォルトは、falseです。リソース・デバッグ・モードを有効にする場合、trueに設定します。有効な場合、ADF FacesはHTTPレスポンス・ヘッダーを設定して、リソース(JavaScriptライブラリ、イメージ、CSSなど)をキャッシュできないことをブラウザに知らせます。
ヒント:
リソース・デバッグ・モードを有効にした後、ブラウザのキャッシュをクリアして、ブラウザでリソースの最新バージョンがロードされるようにします。
パフォーマンスに関するヒント
本番環境では、このパラメータは削除するか、falseに設定します。
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 Application Development FrameworkによるFusion Webアプリケーションの開発』のReal User Experience Insightに対するアプリケーションの有効化に関する項を参照してください。
oracle.adf.view.rich.ASSERT_ENABLEDパラメータを使用して、ADF Faces内でアサーションを使用するかどうかを指定できます。デフォルトは、falseです。アサーションを有効にするにはtrueに設定します。
パフォーマンスに関するヒント
アサーションはパフォーマンスに影響します。実行時環境では、この値はfalseに設定します。
ダイアログを起動する接頭辞を変更するには、org.apache.myfaces.trinidad.DIALOG_NAVIGATION_PREFIXパラメータを設定します。
デフォルトはdialog:で、ダイアログを起動するJSFナビゲーション・ルールの結果の冒頭に使用されます(dialog:errorなど)。
org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSIONパラメータを設定して、スキニング・キーのCSSクラス名の圧縮を決定できます。
デフォルトは、falseです。圧縮を無効にする場合、trueに設定します。
パフォーマンスに関するヒント
圧縮はパフォーマンスに影響します。本番環境では、このパラメータをfalseに設定します。
スキニング・フレームワークは、アプリケーションがリクエストする各スキンの生成されたCSSファイルに関する情報をメモリーにキャッシュします。アプリケーションで異なるスキンが多数使用される場合は、これがパフォーマンスに影響します。org.apache.myfaces.trinidad.skin.MAX_SKINS_CACHEDパラメータの値として、メモリーに情報をキャッシュするスキンの最大数を指定します。このパラメータのデフォルト値は20です。
テストの自動化を有効にするには、アプリケーション内のweb.xmlファイルのoracle.adf.view.rich.automation.ENABLEDパラメータを設定します。このパラメータは、自動化が使用中であることをADF Facesに通知し、外部コンポーネントのid属性を有効にします。このパラメータで有効化されるのはテスト自動化のインフラストラクチャのみであり、テスト自体は開始されません。テストを開始するには、オープン・ソースのSelenium IDEのようなツールが必要になります。内部コンポーネントのidに依存する作成したテストでは、常に値があることが保証されます。デメリットは、内部コンポーネントのid値がフレームワークの強化をサポートするためにADF Facesリリース間で変更される可能性があることです。したがって、コンポーネントのidに依存しないようにテストを記述する必要があります。自動化されたテストをより堅牢に作成するために、絶対ロケータのid属性に依存し、これらの属性に値があることを確認します。
oracle.adf.view.rich.automation.ENABLEDパラメータには、次の値を指定できます。
OFF: 自動化が無効であることを示します。これは、本番環境に適した設定です。
FULL: 自動化が使用中であることをADF Facesに通知し、外部コンポーネントのid属性を有効にします。この設定の使用の際は注意を払い、保護されたテスト環境でのみ使用します。
注意:
テスト自動化コンテキスト・パラメータをFULLに設定すると、oracle.adf.view.rich.security.FRAME_BUSTINGコンテキスト・パラメータはneverに設定された場合と同じように動作します。フレームバスティングを無効にした場合のセキュリティの結果として、ユーザーのアプリケーションのページは悪質なWebサイトからのクリックジャックに対して脆弱になります。このため、テスト自動化の使用を開発環境またはステージング環境に限定し、本番環境でテスト自動化を有効にしないでください。詳細は、「フレームバスティング」を参照してください。
SAFE: 自動化が使用中であることをADF Facesに通知し、外部コンポーネントのid属性を有効にします。この設定はFULLと同様で、セキュアな情報を処理する方法において次のような違いがあります。
フレーム・バストを無効化しません。つまり、oracle.adf.view.rich.security.FRAME_BUSTINGコンテキスト・パラメータは、これがneverに設定された場合と同じように動作しません。
JSESSIONIDが暗号化されます。
「バージョン番号情報」で説明するバージョン番号情報は、表示されません。
サーバーへのロギングは無効です。
パフォーマンスに関するヒント
テストの自動化を有効化すると、クライアント・コンポーネントがページのすべてのコンポーネントについて作成されます。したがって、本番環境ではこのパラメータをOFFに設定します。
アプリケーションのweb.xmlファイルで定義するoracle.adf.view.rich.automation.ENABLEDコンテキスト・パラメータは、EL結合可能です。たとえば、アプリケーションをテストの自動化モードをプログラム的に設定して、単一のテスト・ユーザー、アプリケーションのすべてのユーザーまたは特定のユーザー・グループで使用します。次の例は、EL式を使用してテストの自動化モードをテスト・ユーザーに設定する方法を示します。
<context-param>
<param-name>oracle.adf.view.rich.automation.ENABLED</param-name>
<param-value>
#{securityContext.userName == 'testuser' ? 'SAFE' : 'OFF'}
</param-value>
</context-param>
また、テスト自動化を有効化することによって、実行中のアプリケーションでアサーションが有効になります。使用しているアプリケーションで予想外のコンポーネント動作が発生し、新規アサーションの失敗エラーが表示されるようになったら、アプリケーション・コンポーネントの実装の詳細を調べる必要があります。たとえば、応答のなくなったユーザー・アクションなど、ポップアップ・ダイアログ関連の問題が発見されることは珍しいことではありません。
テスト自動化を有効にした後でのみアサーション失敗エラーを生成する既知のコーディング・エラーが表示されます。
ユーザーのコンポーネントでは、もはやページ定義ファイルに存在しないADFイテレータ・バインディングを参照します。アサーションが有効になっていない場合、このエラーは表示されず、存在していないイテレータを参照するコンポーネントはレンダリングしません。
ユーザーのコンポーネントは、レンダリングしないように定義されている部分トリガー・コンポーネントです(属性がrendered="false"に設定されています)。たとえば、レンダリングされた属性の使用によってアサーション失敗エラーが発生します。
<af:button 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= automation-modeを指定してサーバーを起動することにより、スタンドアロンのOracle WebLogic Serverのレベルでテスト自動化を有効にできます。テスト自動化を有効にしてアプリケーション・サーバー・インスタンスでアプリケーションを実行すると、デプロイされたアプリケーションのweb.xmlファイルのコンテキスト・パラメータの設定がオーバーライドされます。テストの自動化では、マウス・イベントをシミュレートして、マウス・イベントをテストすることができます。マウス・イベントをシミュレートするには、テスト・エンジンのマウス・クリック・シミュレートが発生する前に、テスト・シミュレート・マウス・クリックのための環境設定で使用できるテスト・ハーネスを最初に追加します。テスト・ハーネスは、次の関数をコールします。
AdfPage.prototype.simulateMouse = function(locator, mouseEvent)
関数をコールする前に、APIをコールするためのテスト・エンジンを更新する必要があります。
サンプルのAPIを次に示します。
/**
* Simulate mouse type event using locator.
* @param {String} locator locator string in the format <scopedId>#<subid>
* @param {Object} javascript object containing a sparse set of mouse event name value pairs that will
* be used to create a mouse event. Defaults will be used for any missing fields.
* The defaults are as follows:
* type: “click”
* canBubble: true
* cancelable:true
* view: the current window
* detail: 1
* screenX: 0
* screenY: 0
* clientX: the client location of the X coordinate of the center of the DOM
* element returned by the locator
* clientY: the client location of the Y coordinate of the center of the DOM
* element returned by the locator
* ctrlKey: false
* altKey: false
* shiftKey: false
* metaKey: false
* button: 0
* relatedTarget: null
* If no mouseEvent is provided, a mouseEvent with all of the defaults will be used.
* @abstract
*/
関数イベントの環境を準備した後、このメソッドは定義するテスト・エンジン・クラス・インスタンスに従います。これにより、テスト・エンジン・クラス・インスタンスは、使用する通常のテスト・エンジンを再び指してマウス・イベントをテストします。そのクラスは、マウス・イベントの起動前と同様に、通常のテスト手順をマウス・イベントで継続します。
新しいテスト・エンジンを作成し、新しい抽象APIクラスのインスタンスに指定します。テスト・エンジンの実装は、このメソッドをオーバーライドする必要があります。
AdfDhtmlTestEngine.prototype.simulateDomMouse = function(domElement, mouseEvent)作成したばかりのテスト・フレームワーク・マウス・イベント・コードに追加する必要があるAdfDhtmlTestEngineのインスタンスの例を次に示します。
/** * Used for testing custom implementation of AdfDhtmlTestEngine.
*/
function CustomTestEngine()
{
}
// make CustomTestEngine a subclass of AdfDhtmlTestEngine
AdfObject.createSubclass(CustomTestEngine, AdfDhtmlTestEngine);
/**
* Simulate mouse event on a dom element.
* @param {String} domElement the domElement receiving the mouse event
* @param {Object} javascript object containing a sparse set of mouse event name value pairs.
* @Override
*/
CustomTestEngine.prototype.simulateDomMouse = function(domElement, mouseEvent)
{
// Here, call your custom test framework to actually do the mouse event, now that the environment is all ready for this event.
}
最後に、ADFで新しいテスト・エンジン・クラスが認識されます。これは、web.xmlパラメータを使用して指定できます。AdfPage.PAGE.simulateMouse()のように、テスト設定コードが正常に機能するために、必要な設定操作の後にテスト・フレームワーク関数を呼出す必要がある場合、これは重要です。
<context-param>
<description>
This parameter specifies the automation test engine that is being used.
</description>
param-name>oracle.adf.view.automation.TEST_ENGINE</param-name>
<param-value>CustomTestEngine</param-value>
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のテンプレート・テキストが二重に表示される場合があります。
oracle.adf.view.rich.tonalstyles.ENABLEDパラメータは後方互換性のためにまだ使用可能ですが、パラメータをfalseに設定し、.AFDarkTone、.AFMediumTone、.AFLightToneおよび.AFDefaultToneの色調スタイル・クラスの置換えスタイルとしてテーマを使用します。テーマは色調スタイルより作成しやすく、依存するセレクタが少ない上に、CSS包含セレクタも使用されません。このため、不具合が起こりにくくなります。1つのCSSファイル内のセレクタ数に対する制限により、色調スタイルおよびテーマの両方を、同じアプリケーションでサポートすることはできません。
部分ページ・レンダリング(PPR)最適化を有効化および無効化するには、org.apache.myfaces.trinidad.PPR_OPTIMIZATIONパラメータを使用します。このパラメータは、デフォルトではoffに設定されています。パフォーマンスとPPRの効率を向上するにはonに設定します。
oracle.adf.view.rich.pprNavigation.OPTIONSパラメータを使用して、部分ページ・ナビゲーションを有効化および無効化します。デフォルトでは、値はoffです。部分ページ・ナビゲーションでは、アプリケーション全体で同じベース・ページを使用し、単にページ本体のコンテンツを各ナビゲーションに置き換えます。このプロセスにより、ページが新しくなるたびにJavaScriptライブラリとスタイル・シートを再ロードする必要がなく、パフォーマンスが向上します。詳細は、「部分ページ・ナビゲーションの使用」を参照してください。
有効な値は次のとおりです。
on: アプリケーションのPPRナビゲーションを有効にします。
注意:
パラメータを有効にする場合、ナビゲーションに含まれるコマンド・コンポーネントのpartialSubmit属性をtrueに設定する必要があります。partialSubmitの詳細は、「イベントおよび部分ページ・レンダリング」を参照してください。
off: アプリケーションのPPRナビゲーションを無効にします。
onWithForcePPR: コマンド・コンポーネントでのアクションの結果としてナビゲーションが行われる場合、コンポーネントのpartialSubmit属性がtrueに設定されている場合と同様に、アクションは常にPPRを使用して配信されます。partialSubmitの詳細は、「イベントおよび部分ページ・レンダリング」を参照してください。コンポーネントのpartialSubmitがすでにtrueに設定されている場合、フレームワークでの処理はありません。partialSubmitがtrueに設定されていない場合、ドキュメント全体がリフレッシュされ、古いページ・リフレッシュ動作が保持されます。アクション・コンポーネントにナビゲーションが含まれない場合も、ドキュメント全体がリフレッシュされます。
デフォルトでは、PPRではすべてのフィールドがサーバーに戻されます。遅延時間が長く帯域幅の低いネットワーク上のアプリケーションでは、このためにパフォーマンスが低下する場合があります。
oracle.adf.view.rich.POSTBACK_PAYLOAD_TYPEパラメータを使用して、ADF Facesの編集可能なコンポーネントの値が最後のリクエスト以後に変更されている場合のみ戻すようにアプリケーションを構成します。
有効な値は次のとおりです。
full: すべてのフィールドが戻されます(デフォルト)。
dirty: 最後のリクエスト以後に変更されている編集可能なコンポーネントの値のみ戻されます。ただし、次のものは常に戻されます。
変換または検証に失敗したコンポーネントの値
サード・パーティのコンポーネントの値
リクエスト・スコープまたはバッキングBeanスコープの値にバインドされているコンポーネントの値
af:codeEditor、af:richTextEditor、af:inputFileコンポーネントの値
注意:
dirtyを選択すると、すべてのADF Faces編集可能コンポーネントに対してクライアント・コンポーネントが作成されます。これにより、レスポンス・ペイロード・サイズが若干大きくなります。
oracle.adf.view.rich.libraryPartitioning.DISABLEDパラメータを使用して、JavaScriptのパーティション化の有効/無効を切り替えます。デフォルトでは、値はfalse(有効)です。JavaScriptのパーティション化を使用すると、ページのクライアント・コンポーネントによって必要とされるJavaScriptのみをダウンロードできます。
有効な値は次のとおりです。
false: JavaScriptのパーティション化が有効にされています(デフォルト)。
true: JavaScriptのパーティション化は無効です。
JavaScriptのパーティション化の使用および構成の詳細は、「JavaScriptライブラリのパーティション化」を参照してください。
フレームバスティングは、悪意のあるWebサイトが別のドメインのページをフレームに引き出して偽のページで覆い隠し、元のページの一部のみが表示されるようにしたり、クリックジャックされたページ(ボタンなど)が表示されるようにするクリックジャックを防ぐ方法です。ユーザーがボタンをクリックすると、実際はクリックジャックされたページでボタンをクリックしているため、予期しない結果になります。
たとえば、DomainAに存在するWebベースの電子メール・アプリケーションに対して、IFrameを使用してDomainAの電子メール・アプリケーションのページを指すページを作成してDomainBのWebサイトでページをクリックジャックするとします。2つのページを組み合せて、DomainBから引き出されたページがIFrameでページの大部分を占めるようにして、アカウントのすべての電子メールを削除するボタンのみが表示されるようにします。実際に電子メール・アプリケーション内で操作していることを認識していないユーザーがボタンをクリックすると、意図せずにすべての電子メールが削除されることになります。
フレームバスティングは次のJavaScriptを使用して、アプリケーションのページがフレーム内で実行されるのをブロックし、クリックジャックを防ぎます。
top.location.href = location.href;
org.apache.myfaces.trinidad.security.FRAME_BUSTINGコンテキスト・パラメータは、アプリケーションでフレームバスティングを管理します。有効な値は次のとおりです。
always: フレームでの実行が試行されると常にエラーが表示されリダイレクトします。
differentOrigin: 別のドメインから派生したページでフレームの実行が試行される場合のみ、エラーが表示されリダイレクトします(デフォルト)。
never: 任意の派生元ドメインの任意のフレームでページを実行できます。
注意:
ADF Facesページの場合、次のコンテキスト・パラメータのいずれかをtrueに設定すると、このコンテキスト・パラメータは無視され、neverに設定した場合と同様に動作します。
org.apache.myfaces.trinidad.util.ExternalContextUtils.isPortlet
oracle.adf.view.rich.automation.ENABLED
これはMyFaces Trinidadパラメータであるため、これらのページにも使用できます。My Faces Trinidadアプリケーションにおけるこのパラメータの使用の詳細は、MyFaces Trinidadドキュメントを参照してください。
whitelist: ページはoracle.adf.view.ALLOWED_ORIGINSパラメータの値を使用して、このアプリケーションのドキュメントをフレーム化できる派生元を指定します。
org.apache.myfaces.trinidad.security.FRAME_BUSTINGコンテキスト・パラメータもELをサポートします。ELが使用されると、ELはユーザー・セッションごとに1回評価されます。
FRAME_BUSTINGパラメータをalwaysに設定して、アプリケーションがフレームバスティングを使用するように構成すると、フレームでページの実行が試行されるたびに、ユーザーにはページがリダイレクトされているというアラートが表示され、JavaScriptコードが実行されてページが最上位と定義されるため、ページのフレーム内での実行が却下されます。
アプリケーションでフレームを使用する必要がある場合は、パラメータの値をdifferentOriginに設定できます。この設定では、フレームの派生元が親ページと異なる場合のみ、フレームバスティングが実行されます。これがデフォルトの設定です。
注意:
ページの派生元はドメイン名、アプリケーション・レイヤー・プロトコル、およびほとんどのブラウザではスクリプトを実行しているHTMLドキュメントのTCPポートを使用して定義されます。これらの値がすべて完全に同一である場合にのみ、ページは同じドメインから派生したとみなされます。
たとえば、次のページは、ポート番号が違うため派生元のチェックに失敗します。
http://www.example.com:8888/dir/page.html
http://www.example.com:7777/dir/page.html
たとえば、DomainApage2ページを含むフレームを使用するアプリケーションにDomainApage1という名前のページがあるとします。外部のDomainBpage1がDomainApage1ページのクリックジャックを試行するとします。結果は次のようなウィンドウ階層になります。
DomainBpage1
DomainApage1
DomainApage2
アプリケーションでdifferentOriginにフレームバスティングが設定されていれば、フレームワークは親ウィンドウ階層をたどって、任意の祖先ウィンドウが別のドメインから引き出されているかどうかを判断できます。DoaminBpage1は別のドメインから派生しているため、DomainApage1ページに対してフレームバスティングJavaScriptコードが実行され、トップレベル・ウィンドウが表示されます。DomainApage2は同じドメインから派生しているため、DomainApage1はフレーム内での実行が許可されます。
FRAME_BUSTINGパラメータをwhitelistに設定した場合、oracle.adf.view.ALLOWED_ORIGINSパラメータの値は、このアプリケーションのドキュメントのフレーム化を許可された派生元を指定します。
ALLOWED_ORIGINSパラメータにはスペースの区切りリストを使用できます。リストの形式は、http://www.w3.org/TR/CSP2/#source-listで説明されている、コンテンツ・セキュリティ・ポリシー・ソース・リストです。このスペースで区切られた派生元のリストでは、ホストおよびポートの最初のセグメントでワイルドカードを使用できます。次に例を示します。
http://*.oracle.com:*
フレーム祖先の仕様との違いは、値*がサポートされ、派生元がコンテンツをフレーム化できることを示すことです。指定しないか、または空やnullのリストが値式から返される場合、値はデフォルトで'self'になり、同じ派生元でのフレーム化のみが可能なことを示します。
許可された派生元のリストを指定した場合、現在の派生元は自動的にはアプリケーション・コンテンツをフレーム化できません。アプリケーションがこれをできるようにするには、許可された派生元のリストに'self'を明示的に追加します。
ALLOWED_ORIGINSパラメータはELをサポートします。EL式はStringのコレクションと、許可された派生元を示す各コレクション・アイテムの文字列を返す必要があります。EL式はユーザー・セッションごとに1回評価されます。
oracle.adf.view.rich.versionString.HIDDENパラメータを使用し、バージョン情報をページのHTML上に表示するかどうかを決めます。パラメータがfalseに設定されると、ADF FacesページのHTMLには、ADF Facesのバージョン、および次の例に示すページの作成に使用される他のコンポーネントの情報が含まれます。
</body><!--Created by Oracle ADF (ADF Faces API - 11.1.1.4.0/ADF Faces Implementation - 11.1.1.4.0, RCF-revision: 39851 (branch: faces-1003-11.1.1.4.0, plugins: 1.2.3), Trinidad-revision: 1051544 (branch: 1.2.12.3-branch, plugins: 1.2.10), build: adf-faces-rt_101221_0830, libNum: 0355 powered by JavaServer Faces API 1.2 Sun Sep 26 03:21:43 EDT 2010 (1.2)), accessibility (mode:null, contrast:standard, size:medium), skin:customSkin.desktop (CustomSkin)--></html>
このバージョン情報を非表示にするため、パラメータをtrueに設定します。これはデフォルトです。
注意:
本番環境においては、セキュリティ問題を回避するため、このパラメータをtrueに設定します。開発環境においてデバッグ目的でのみ、falseと設定します。
プログラムでaf:outputTextまたはaf:outputFormattedコンポーネントを部分ターゲットとして(addPartialTarget()へのコールを使用して)追加する際は、autoに設定されたoracle.adf.view.rich.SUPPRESS_IDSコンテキスト・パラメータを使用します。
デフォルトでは、このパラメータはexplicitに設定されているため、次のいずれかに当てはまる場合を除き、自動生成されたコンポーネントIDと明示的に設定されたコンポーネントIDの両方を抑制することでコンテンツ・サイズが削減されています。
コンポーネントのpartialTriggers属性が設定されている場合
clientComponentがtrueに設定されている場合
addPartialTarget()へのコールでは、partialTriggers属性が設定されておらず、部分ページ・レンダリングは成功しません。これらのコンポーネントの自動生成されたコンポーネントIDのみを抑制する場合は、パラメータをautoに設定します。
ADF Facesキャッシング・フィルタ(ACF)は、イメージ、スタイルシート、.pdfや.zipファイルといったドキュメントなどの静的アプリケーション・オブジェクトのキャッシング(または圧縮、あるいはその両方)を有効にすることで、Webアプリケーションのパフォーマンスを上げる場合に使用可能なJava EEサーブレット・フィルタです。これらのオブジェクトは、Oracle Web CacheやOracle Traffic Directorなどの外部Webキャッシュまたはブラウザ・キャッシュでキャッシュされます。コンテンツのキャッシュ可能性は、主に、Webキャッシュ管理者が定義するURLベースのルールで決まります。アプリケーション管理者または作成者はACFを使用して、adf-config.xmlファイルに直接キャッシング・ルールを定義できます。キャッシング・ルールの定義の詳細は、「ADF Facesキャッシング・フィルタのキャッシング・ルールの定義」を参照してください。
ADF Facesタグ・ライブラリJARには、.js、.css、イメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれます。これらの固定ルールはadf-settings.xmlファイルに定義されており、アプリケーションのデプロイ中やデプロイ後には変更できません。ルールが競合する場合は、アプリケーション開発者によってadf-config.xmlに定義されているキャッシング・ルールが優先されます。adf-settings.xmlの設定の詳細は、「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パターンを定義します。
次の例に、ACFサーブレット定義のサンプルを示します。
<!- Servlet Filter definition ->x <filter> <filter-name>ACF</filter-name> <filter-class>oracle.adf.view.rich.webapp.AdfFacesCachingFilter</filter-class> </filter> <!- servlet filter mapping definition -> <filter-mapping> <filter-name>ACF</filter-name> <url-pattern>*</url-pattern> </filter-mapping>
注意:
アプリケーションに定義されている一連のフィルタの中で、ACFサーブレット・フィルタを最初のフィルタにする必要があります。
リンクをレンダリングするADF Facesコマンド・コンポーネントのコンテキスト・メニューの提供を、エンド・ユーザーのブラウザで有効化または無効化するには、oracle.adf.view.rich.ACTION_LINK_BROWSER_CONTEXT_SUPPRESSIONコンテキスト・パラメータを使用します。コンテキスト・メニューにより、コマンド・コンポーネントに指定されている別のアクション(新しいウィンドウにリンクを開くなど)を起動するメニュー・オプションが提供されます。
このパラメータはデフォルトでyesに設定されているため、ADF Facesコマンド・コンポーネントのコンテキスト・メニューはレンダリングされません。パラメータをnoに設定すると抑制を無効化することができ、ネイティブのブラウザ・コンテキスト・メニューが表示されます。この機能を構成できるADF Facesコマンド・コンポーネントの詳細は、参照してください。
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ログにレポートされます。詳細は、「デバッギング」を参照してください。
リクエストがサーバーに送信されると、セッション・タイムアウト値がsession-timeoutパラメータの値に基づいて、ページに書き込まれます。web.xmlファイルが作成されている場合、デフォルトでは、これは60分に設定されています。詳細は、『Oracle WebLogic Server Webアプリケーション、サーブレット、JSPの開発』のsession-configを参照してください。
コンテキスト・パラメータoracle.adf.view.rich.sessionHandling.WARNING_BEFORE_TIMEOUTを使用して、セッション・タイムアウトの警告の間隔を構成できます。設定した場合、ユーザーは、警告ダイアログでセッションを延長することができ、セッションの期限が切れてページがリフレッシュされるときに通知が送信されます。ユーザーへの通知が頻繁に行われないようにするには、タイムアウトの警告メカニズムにより、クライアントが、最後のキーボードまたはマウス・イベントを検知し、アクティブなままかどうかを判断しようとします(警告ダイアログに固有ではありません)。最後のアクティビティがセッション・タイムアウトの警告の間隔よりも最近の場合、サーバーに対してサーバー・セッション・タイムアウト値をリセットするリクエストが行われます。アプリケーションのセキュリティ構成に応じて、アクティビティが検出されない場合、セッションの期限が切れると、ユーザーはページのログにリダイレクトされます。
WARNING_BEFORE_TIMEOUTの値が120秒より少ない場合、ページにクライアントの状態保存が使用されている場合、またはセッションが無効化されている場合は、機能が無効化されます。セッション・タイムアウト値は、セッションから直接取得されます。
次の例に、セッションがタイムアウトする120秒前に警告ダイアログを表示する構成を示します。
<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分を超えるように設定する必要があります。そうしなければ、機能は無効になります。
注意:
WARNING_BEFORE_TIMEOUT (秒単位で表される)はsession-timeout (分単位で表される)よりも短く設定される必要があります。
JSPページの処理中に、HTTPストリーミング・リクエストでのJSPタグの実行を有効化または無効化するには、oracle.adf.view.rich.tag.SKIP_EXECUTIONパラメータを使用します。Faceletsの処理は含まれません。
デフォルトでは、このパラメータはstreamingに設定されており、ストリーミング・リクエスト中のJSPタグの実行はスキップされます。ストリーミング・リクエストにタグの実行が必要な場合に、リクエストごとにJSPタグを実行するには、パラメータをoffに設定します。
ADF FacesはURLパラメータを使用して、ウィンドウIDや状態などの情報を保持します。しかし、実際に同じURLがある場合、URLパラメータのために検索エンジンではURLの認識が妨げられ、分析できなくなります。URLパラメータのために、ブックマークを付けることもできなくなります。
デフォルトでは、ADF Facesは、HTML5履歴管理APIを使用して、これらの内部的に使用される動的URLパラメータを削除します。このAPIを使用できない場合、セッションのCookieが使用されます。
コンテキスト・パラメータoracle.adf.view.rich.prettyURL.OPTIONSを使用して、URLパラメータを削除する方法を手動で構成することもできます。パラメータが削除されないように、パラメータをoffに設定します。HTML5履歴管理APIを使用する場合にのみ、パラメータをuseHistoryApiに設定します。ブラウザがこのAPIをサポートしていない場合、パラメータは削除されません。セッションのCookieを使用してパラメータを削除する場合は、パラメータをuseCookiesに設定します。ブラウザがCookieをサポートしていない場合、パラメータは削除されません。
図A-1に示すように、ページがロードしているときにデフォルトで表示されるスプラッシュ画面の有効または無効を切り替えるには、oracle.adf.view.rich.SPLASH_SCREEN パラメータを使用します。
図A-1 ADF Facesスプラッシュ画面

このパラメータは、デフォルトでonに設定されています。スプラッシュ画面が表示されないようにするには、offに設定します。
グラフ・コンポーネントとゲージ・コンポーネントのデフォルトの出力形式をHTML5に変更するには、oracle.adf.view.rich.dvt.DEFAULT_IMAGE_FORMATパラメータを追加します。
<context-param> <param-name>oracle.adf.view.rich.dvt.DEFAULT_IMAGE_FORMAT</param-name> <param-value>HTML5</param-value> </context-param>
デフォルトでは、このパラメータはすべての新しいアプリケーションに追加されます。有効な値はHTML5(デフォルト)およびFLASHです。
特定のレイアウト・コンポーネントや表がどのように拡大処理されるかをグローバルにコントロールする場合、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータを追加します。
特定のレイアウト・コンポーネント(af:decorativeBox, af:panelAccordion, af:panelDashboard, af:panelStretchLayout, af:panelSplitter, af:panelTabbed)が拡大できるかどうかは、dimensionsFrom属性の値に基づきます。これらのコンポーネントのデフォルトの設定はparentで、これはコンポーネンントのサイズが次の順序で決まることを意味します。
inlineStyle属性から。
inlineStyleに値がない場合は、サイズは親コンテナにより決まります(すなわち、コンポーネントは拡大します)。
親コンテナが構成されていないか、その子を拡大できない場合は、サイズがスキンによって決定されます。
しかし、コンポーネントが常にautoをdimensionsFrom属性の値として使用することをユーザーが望む場合は(すなわち、コンポーネントはその親コンポーネントが子の拡大を可能としている場合は拡大し、そうでない場合は、コンポーネントのサイズはその子コンポーネントに基づく)、ユーザーはoracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータをautoに設定できます。ユーザーはまた個々のコンポーネントにdimensionsFrom属性を使用して、この設定をオーバーライドすることができます。
表でも同様に、autoHeightRows属性が表が拡大するかどうかを決めます。デフォルトでは-1に設定されており、これは、表のサイズはフェッチされた行の数に基づくことを意味します。しかし、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータがautoに設定されている場合、表は親コンポーネントが拡大を可能としている場合は拡大し、そうでない場合は、表のfetchSize属性で決まる行の数になります。
デフォルトでは、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータはlegacyに設定されており、これは、コンポーネントはその標準のデフォルトの値を使用することを意味します。
親コンポーネントが拡大を可能にしている時にレイアウト・コンポーネントと表の両方が常に拡大することを望む場合は、oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONSパラメータをautoに設定します。
iOSオペレーティング・システムで、表でスクロールを使用するように構成すると、デフォルトではコンテンツの上にマウスを置いたときのみスクロールバーが表示されます。それ以外の場合は、非表示のままです。その他のオペレーティング・システムでは、デフォルトではスクロールバーは常に表示されます。oracle.adf.view.rich.table.scrollbarBehaviorコンテキスト・パラメータを使用して、すべてのオペレーティング・システムでマウスオーバーするまでスクロールバーを表示しないようにできます。
図A-2 に、スクロールバーが非表示の表を示します。
図A-2 スクロールバーが非表示

図A-3 は、同じ表でユーザーが表の上にマウスを置いたところで、スクロールバーが表示されています。
図A-3 スクロールバー表示

スクロールバーの表示方法をグローバルに制御するには、oracle.adf.view.rich.table.scrollbarBehaviorを追加します。値をoverlayに設定すると、マウスオーバーが起きるまでスクロールバーは表示されません。値をdefaultに設定するとスクロールバーが常に表示されます。
注意:
oracle.adf.view.rich.table.scrollbarBehaviorパラメータは、値としてEL式も受け付けます。
次の場合は、javax.faces.PROJECT_STAGEコンテキスト・パラメータを使用します。
XMLで明示的に構成されていない場合はデフォルト値を強制
本番環境で不適切な値が設定されている場合に警告を生成
デフォルトでは、パラメータはPRODUCTIONに設定されます。次に例を示します。
<param-value>PRODUCTION</param-value>
実行時にApplication.getProjectStage()を呼び出すことにより、構成されている値をアプリケーション・オブジェクトに問い合わせることができます。Productionステージで次のいずれかのパラメータがONに設定されている場合、警告が生成されます。
oracle.adf.view.rich.ASSERT_ENABLED
oracle.adf.view.rich.automation.ENABLED (web.xml内またはシステム・プロパティとして設定)
また、FALSEに設定されている場合に警告を生成するTrinidadおよびADF Facesパラメータには次のものが含まれます。
org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT
org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION
org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION
org.apache.myfaces.trinidad.resource.DEBUG
<debug-output> (trinidad-config.xmlファイルから)
注意:
TrinidadパラメータがXMLを介して設定されている場合は追加の警告が生成されます。
org.apache.myfaces.trinidad.CLIENT_ID_CACHING Systemプロパティが無効になっている場合にも警告が生成されます。
アプリケーション全体に関わるその他のオプションのコンテキスト・パラメータは次のとおりです。
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が機能しません。
JSF構成ファイルには、JSFアプリケーションのリソース(カスタム・バリデータ、マネージドBeanなど)を登録し、ページ間のナビゲーション・ルールをすべて定義します。JSF構成ファイル名は、アプリケーションで任意の名前にできますが、通常、faces-config.xmlファイルです。小規模なアプリケーションには、通常faces-config.xmlファイルが1つ含まれます。
アプリケーションでADF Facesコンポーネントを使用する場合、JDeveloperにより、必要な構成要素がfaces-config.xmlに自動で追加されます。faces-config.xmlファイルの詳細は、Java EE 6チュートリアル(http://download.oracle.com/javaee/index.html)を参照してください。
JDeveloperでJSFテクノロジを使用するプロジェクトを作成すると、空のfaces-config.xmlファイルが/WEB-INFディレクトリに作成されます。JSFテクノロジを使用するアプリケーション・テンプレート(Java EE Webアプリケーション・テンプレートなど)を基に、新規アプリケーション・ワークスペースを作成した場合も、空のfaces-config.xmlファイルが自動的に追加されます。詳細は、「アプリケーション・ワークスペースの作成」を参照してください。
アプリケーションでADF Facesコンポーネントを使用する場合、ADFデフォルト・レンダー・キットIDをoracle.adf.richに設定する必要があります。JSFページへのADF Facesコンポーネントの最初の挿入時、またはFusionテンプレートを使用して作成されたアプリケーション・ワークスペースへの最初のJSFページの追加時、次の例に示すとおり、ADFコンポーネントのデフォルト・レンダー・キットがfaces-config.xmlファイルにJDeveloperで自動的に挿入されます。
<?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 Application Development FrameworkによるFusion Webアプリケーションの開発』の「ADFタスク・フローの概要」の章を参照してください。
JDeveloperでは、宣言的概要エディタを使用してfaces-config.xmlファイルを変更できます。JSF構成要素に精通している場合は、XMLエディタを使用してコードを直接編集できます。
faces-config.xmlを編集する手順:
ヒント:
JSFでは、1つのfaces-config.xmlファイルに複数の<application>要素を使用できます。JSF構成エディタの「概要」モードでは、ファイルの最初の<application>インスタンスの編集のみが許可されます。その他の<application>要素については、XMLエディタを使用してファイルを直接編集する必要があります。
adf-config.xmlファイルは、セキュリティ、キャッシュ、変更永続性などのアプリケーション全体の機能の構成に使用されます。他のOracleコンポーネントもこのファイルでプロパティを構成します。
アプリケーションの構成を行う前に、まず、adf-config.xmlファイルを作成する必要があります。その後、アプリケーションで使用するアプリケーション全体のOracle ADF機能の構成を追加できます。
始める前に:
プロジェクト用のMETA-INFディレクトリの作成がまだの場合は、これを作成します。
adf-config.xmlを作成および編集する手順:
ADF Faces Caching Filter (ACF)のキャッシング・ルールは、Webアプリケーションの.adf/META-INFディレクトリにあるadf-config.xmlファイルに定義されています。これらのURLの一致ルールに対して、ACFがリクエスト・パスに含まれるように構成する必要があります。ACFサーブレット・フィルタ定義の追加方法の詳細は、「ADF Facesキャッシング・フィルタ」を参照してください。
1つ以上のキャッシング・ルールの単一のルート要素は<caching-rules>で、ネームスペースhttp://xmlns.oracle.com/adf/faces/configに<adf-faces-config>要素の子として構成されます。
<caching-rule>要素は各キャッシング・ルールを定義し、構成ファイルにリストされている順序で検証されます。次の例に、adf-config.xmlでキャッシング・ルールを定義する構文を示します。
<adf-config xmlns="http://xmlns.oracle.com/adf/config">
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<caching-rules xmlns="http://xmlns.oracle.com/adf/faces/rich/acf">
<caching-rule id="cache-rule1">
<cache>true|false</cache>
<duration>3600</duration>
<agent-caching>true|false</agent-caching>
<agent-duration>4800</agent-duration>
<compress>true|false</compress>
<cache-key-pattern>....</cache-key-pattern>
<search-key>
<key>key1</key>
<key>key2</key>
</search-key>
<varyBy>
<vary-element>
<vary-name><cookieName>|<headerName></vary-name>
<vary-type>cookie|header</vary-type>
</vary-element>
</varyBy>
</caching-rule>
</caching-rules>
</adf-faces-config>
</adf-config>
各キャッシング・ルールは、<caching-rule>要素に定義されます。オプションのid属性を定義して、ルールの場所をサポートできます。表A-1 に、アプリケーションのオブジェクトをキャッシュまたは圧縮するためのパラメータの定義に使用される<caching-rule>子要素を説明します。
表A-1 AFCキャッシング・ルールの要素および属性
| ルール要素の子 | 属性の説明および値 |
|---|---|
|
オブジェクトをWebキャッシュにキャッシュする必要があるかどうかを指定します。値を |
|
オブジェクトがWebキャッシュにキャッシュされる期間を秒単位で定義します。デフォルト値は |
|
Webキャッシュがない場合にブラウザ・キャッシュを使用するには、 |
|
オブジェクトがブラウザ・キャッシュにキャッシュされる期間を秒単位で定義します。デフォルトは |
|
Webキャッシュにキャッシュされたオブジェクトを圧縮する必要があるかどうかを指定します。デフォルト値は |
|
ルールに一致するURLを決定します。リクエストURLのファイル拡張子またはパス接頭辞に、 |
|
キャッシュされたオブジェクトにタグ付けされている検索キーを定義します。各 |
|
Webキャッシュにキャッシュされたオブジェクトのバージョニングに使用されます。 各
Webキャッシュにより、リクエスト・パラメータが自動的にバージョニングされます。リクエスト・パラメータに基づき、オブジェクトの複数のバージョンがWebキャッシュに格納されます。 |
アプリケーションではデフォルトで、各コンポーネントに指定されている出力形式が使用されます。たとえば、ADFデータ視覚化コンポーネントを使用するアプリケーションは、アニメーションと対話効果をWebブラウザに表示するFlash出力形式を指定します。コンポーネントの出力形式がFlashで、AppleのiOSオペレーティング・システムのように、ユーザーのプラットフォームでFlash Playerがサポートされていない場合は、出力形式は使用可能な最善のフォールバックに自動的にダウングレードされます。
adf-config.xmlにflash-player-usageコンテキスト・パラメータを設定することで、アプリケーション全体のFlashコンテンツの使用を構成できます。有効な設定は次のとおりです。
downgrade: 出力形式がFlashで、Flash Playerを使用できない場合に、使用可能な最善のフォールバックにダウングレードすることを指定します。ユーザーは、Flash Playerのダウンロードを要求されません。
disable: アプリケーション全体におけるFlashの使用の無効化を指定します。クライアントでFlash Playerを使用できるかどうかに関係なく、すべてのコンポーネントがFlash以外でレンダリングされます。
次の例に、adf-config.xmlでFlashをアプリケーション全体で無効にするための構文を示します。
<adf-config xmlns="http://xmlns.oracle.com/adf/config">
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/config">
<flash-player-usage>disabled</flash-player-usage>
</adf-faces-config></adf-config>
コンテキスト・パラメータでは、EL式の値もサポートされています。このため、アプリケーションの異なる部分や、それぞれのユーザーでプリファレンスに基づいて、Flashを有効化するか無効化するかをアプリケーションで選択することが可能です。
コンテンツ配信ネットワーク(CDN)では、ネットワークでのコンテンツへのアクセスがさらに効率的になることで、Webアプリケーションのパフォーマンスが向上します。アプリケーションでは、様々なCDN構成を使用してユーザー・エクスペリエンスを最適化できます。CDNを介してすべてのリクエストをルーティングする構成がよく利用されるようになっています。CDNは、クライアントとアプリケーションとの間のプロキシとして機能します。CDN固有の構成ツールを使用して、キャッシングや圧縮のルールを指定できます。
また、CDNからルーティングされるリクエストを制限する方法もあります。たとえば、予備リソース(イメージ、JavaScriptライブラリ、スタイルシートなど)のリクエストのみをCDNに誘導し、アプリケーション生成HTMLコンテンツのリクエストを直接処理できます。この場合、相対リソースURIを、CDNで処理されるホストを指し示す絶対URIに変換する必要があります。
たとえば、アプリケーション定義のイメージが、imagesというローカル・ディレクトリに保存されるとします。イメージを参照するコードは、次の例のようになります。
<af:image source="/images/logo.png"
shortDesc="My Company Logo"
id="i1"/>
次の例に示すように、イメージをCDNから取得するには、CDNのイメージ・ソースの絶対URIを明示的に指定する方法があります。
<af:image source="http://mycdn.com/images/logo.png"
shortDesc="My Company Logo"
id="i1"/>
この方法では、アプリケーションの多くの場所(すべてのイメージ参照の可能性がある)を更新する必要があるため、ページ間でCDNベースURIが重複してしまうマイナス面があります。これにより、CDN使用の有効/無効が切り替えられたり、CDNから別の極めて困難なCDNに切り替えられたりする可能性があります。
あるいは、次の例に示すように、リソース関連属性を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ファイルで定義されます。
たとえば、次のコード・サンプルでは、イメージ・ディレクトリのすべてのpngイメージが、http://mycdn.com接頭辞を含めて書き換えられるように指定されています。
<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>要素で使用できるエイリアスの小規模セットを公開します。
たとえば、次の例の構成では、http://mycdn.com/接頭辞を、ADF Facesコンポーネントで定義されるすべてのイメージに適用しています。
<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を設定する手順:
af:skinsエイリアスを使用して、CDNを指し示すようにスキン・スタイルシートを書き換えることができますが(CDNはアプリケーション・サーバーにリクエストをプロキシするように構成される)、アプリケーションがクラスタまたはロードバランスされた環境(あるいはその両方)で実行している場合、問題が生じることがあります。
スキン・スタイルシートは、包含ページ・コンテンツをレンダリングしたサーバーに生成されて格納されます。CDNを介してスタイルシート・リクエストをルーティングすることで、サーバー・アフィニティが失われる可能性があります(たとえば、CDNが別のドメインで機能する場合、セッションCookieが失われます)。その結果、スタイルシート・リクエストは、リクエストしたスタイルシートをまだ生成していないサーバーにルーティングされます。このような場合、スタイルシート・リクエストは正常に完了しません。
ロードバランス環境またはクラスタ化環境(あるいはその両方)で起こる可能性のある失敗を回避するには、Cookieまたはセッション・アフィニティが失われる場合、スキン・スタイルシートURIを書き換えないでください。
スキン・スタイル・シートおよびJavaScriptパーティション・ファイルは実行時に動的に生成されます。これらのリソースをCDNのサーバーに移動する必要がある場合は、MyFaces TrinidadおよびADF Facesの両方をツールとして使用し、これらのファイルを事前生成して保存し、静的サイトにアップロードできます。
スキン・スタイル・シートを事前生成するには、Trinidad事前生成サービスを使用します。詳細は、http://myfaces.apache.org/trinidad/のTrinidad開発者ガイドのスキニングに関する章を参照してください。
JavaScriptパーティション・ファイルを事前生成するには、ADF Faces JavaScriptライブラリ事前生成サービスを使用します。
ADF Faces JavaScriptライブラリ事前生成サービスを使用するには:
adf-settings.xmlファイルには、ADF Facesヘルプ・プロバイダやキャッシング/圧縮ルールなどのプロジェクトレベルおよびライブラリレベルの設定が含まれます。adf-settings.xmlファイルの構成設定は固定で、アプリケーションのデプロイ時やデプロイ後に変更できません。アプリケーションに複数のadf-settings.xmlファイルがあることがあります。ADF設定ファイルのユーザーは、これらの構成の内容をマージする必要があります。
アプリケーションの構成を行う前に、まず、adf-settings.xmlファイルを作成する必要があります。その後、アプリケーションで使用するプロジェクトの機能の構成を追加できます。このファイルでの構成の詳細は、「adf-settings.xmlの要素について」を参照してください。
adf-settings.xmlを作成および編集する手順:
adf-settings.xmlファイルでは次の構成要素がサポートされています。
次の要素を使用して、ヘルプ・システムで使用されるヘルプ・プロバイダを登録します。
<adf-faces-config>: ADF Faces固有の構成をグループにまとめる親要素。
<prefix-characters>: ヘルプ・プロバイダで、特定の接頭辞で始まるヘルプ・トピックIDにのみヘルプ・トピックを提供する場合、その接頭辞を指定します。接頭辞を使用しない場合は、省略できます。
<help-provider-class>: ヘルプ・プロバイダ・クラス。
<custom-property>および<property-value>: ヘルプ・プロバイダ・クラスで受け入れるパラメータを定義するプロパティ要素。
次の例に、登録されたヘルプ・プロバイダの例を示します。このケースでは、アプリケーションのヘルプ・プロバイダは1つのみのため、接頭辞を含める必要がありません。
<adf-settings xmlns="http://xmlns.oracle.com/adf/settings">
<adf-faces-config xmlns="http://xmlns.oracle.com/adf/faces/settings">
<help-provider prefix="MYAPP">
<help-provider-class>
oracle.adfdemo.view.webapp.MyHelpProvider
</help-provider-class>
<property>
<property-name>myCustomProperty</property-name>
<value>someValue</value>
</property>
</help-provider>
</adf-faces-config>
</adf-settings>
アプリケーション固有のライブラリおよびJARには、ファイルのキャッシングまたは圧縮(あるいはその両方)を必要とする様々なリソースが含まれています。ライブラリまたはJARファイルが複数ある場合は、アプリケーションに、一致URLに基づいて様々なキャッシング・ルールを含む1つ以上のadf-setting.xmlファイルが存在することがあります。キャッシング・ルールは、実行時に順序付けられたリストにマージされます。リソースに対するリクエストが複数のキャッシング・ルールに一致する場合は、リストでの順序が先のルールが優先されます。
ADF Faces JARファイルには、.js、.cssおよびイメージ・ファイル・タイプなどの共通リソース・タイプのデフォルトのキャッシング・ルールが含まれています。これらの固定ルールはadf-settings.xmlファイルに定義されており、アプリケーションのデプロイ中やデプロイ後には変更できません。アプリケーション開発者は、adf-config.xmlファイルにアプリケーション・キャッシング・ルールを定義でき、このルールはadf-settings.xmlに定義されるルールより優先されます。次の例は、ADF Faces JAR用のadf-settings.xmlファイルを示しています。
<adf-settings>
<adf-faces-settings>
<caching-rules>
<caching-rule id="cache css">
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.css</cache-key-pattern>
</caching-rule>
<caching-rule id="cache js">
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.js</cache-key-pattern>
</caching-rule>
<caching-rule id="cache png">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.png</cache-key-pattern>
</caching-rule>
<caching-rule id="cache jpg">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.jpg</cache-key-pattern>
</caching-rule>
<caching-rule id="cache jpeg">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.jpeg</cache-key-pattern>
</caching-rule>
<caching-rule id="cache gif">
<compress>false</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.gif</cache-key-pattern>
</caching-rule>
<caching-rule id="cache html">
<compress>true</compress>
<duration>99999</duration>
<agent-caching>true</agent-caching>
<cache-key-pattern>*.html</cache-key-pattern>
</caching-rule>
</caching-rules>
</adf-faces-settings>
</adf-settings>
ADF Facesコンポーネントを使用してJSFアプリケーションを作成する場合、ADF Facesの機能(スキン・ファミリ、ページ・アクセシビリティ・サポートのレベルなど)をtrinidad-config.xmlファイルで構成します。faces-config.xml同様、trinidad-config.xmlは、JSF式言語(EL)または静的値を使用して要素プロパティを定義できる単純なXML構造を持ちます。
注意:
システム・プロパティでorg.apache.myfaces.trinidad.CHECK_STATE_SERIALIZATIONを使用するように設定することで、高可用性テストのサポートを構成することもできます。詳細は、「システム・プロパティの構成に関する必知事項」を参照してください。
JDeveloperで、ADF FacesコンポーネントをJSFページへ初めて追加すると、trinidad-config.xmlの基礎ファイルが/WEB-INFディレクトリに自動的に作成されます。次の例に初期trinidad-config.xmlファイルを示します。
<?xml version="1.0" encoding="windows-1252"?> <trinidad-config xmlns="http://xmlns.oracle.com/trinidad/config"> <skin-family>alta</skin-family> <skin-version>v1</skin-version> </trinidad-config>
デフォルトでは、JDeveloperはADF Facesを使用するJSFアプリケーションのaltaスキン・ファミリを構成します。これをskyros、simpleに変更することも、カスタム・スキンを使用することもできます。カスタム・スキンを使用する場合は、trinidad-skins.xml構成ファイルを作成し、カスタム・スキンを使用するようtrinidad-config.xmlを変更します。カスタム・スキンの作成の詳細は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
通常、次のものをtrinidad-config.xmlファイルで構成します。
ページ・アニメーション
ページ・アクセシビリティ・サポートのレベル
タイム・ゾーン
拡張デバッグ出力
Oracle Help for the Web (OHW)のURL
ファイルのアップロードに使用するカスタム・ファイル・アップロード・プロセッサの登録もできます。
JDeveloperでは、XMLエディタを使用してtrinidad-config.xmlを変更できます。
trinidad-config.xmlを編集する手順:
「アプリケーション」ウィンドウで、trinidad-config.xmlをダブルクリックします。
XMLエディタで、XMLエディタに直接コードを入力することも、構造ウィンドウを使用して要素を追加することもできます。構造ウィンドウを使用するには次のようにします。
構造ウィンドウで要素を右クリックして「前に挿入」または「後ろに挿入」を選択し、挿入する要素を選択します。
構造ウィンドウで新しく挿入された要素をダブルクリックします。「プロパティ」ウィンドウで、値を入力するかドロップダウン・リストから選択します。
ほとんどの場合、JSF EL式(#{view.locale.language=='en' ? 'minimal' : 'alta'}など)、あるいは静的値(たとえば、<debug-output>true</debug-output>)を入れることができます。EL式は、リクエストごとに動的に再評価され、適切なオブジェクト(ブール・オブジェクトなど)を戻す必要があります。
使用できる構成要素のリストは、「trinidad-config.xmlの要素について」を参照してください。
trinidad-config.xmlファイルの構成後、プログラムから、あるいはJSF EL式を使用してプロパティ値を取得できます。詳細は、「RequestContext EL暗黙オブジェクトの使用」を参照してください。
すべてのtrinidad-config.xmlファイルは、http://myfaces.apache.org/trinidad/config XMLネームスペースの<trinidad-config>要素で始まる必要があります。<trinidad-config>内の要素の順序は任意です。要素のインスタンスを複数含めることができます。
一部のADF Facesコンポーネントでは、レンダリング時にアニメーションが使用されます。たとえば、ツリーおよびツリー表でノードを展開および縮小する際、アニメーションが使用されます。次のコンポーネントでレンダリング時にアニメーションが使用されます。
ファセットを公開および非公開にする場合の表の詳細ファセット
ノードを展開および縮小する際のツリーおよびツリー表
メニュー
ポップアップ・セレクタ
ダイアログ
ノート・ウィンドウおよびメッセージの表示
使用されるアニメーションのタイプとタイミングは、アプリケーションのスキンの一部として構成されます。詳細は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
animation-enabled要素はtrueまたはfalseに設定できます。また、trueまたはfalseに解決されるEL式を使用できます。デフォルトで、animation-enabledはtrueに設定されています。
パフォーマンスに関するヒント
アニメーションを使用するとユーザー体験を改善できますが、アクションを実行したときのレスポンス時間が長くなる可能性があります。速さが重要である場合、このパラメータはfalseに設定します。
「trinidad-config.xmlでのADF Facesの機能の構成方法」での説明のとおり、JDeveloperでは、ADF Facesを使用するJSFアプリケーションにaltaスキン・ファミリがデフォルトで使用されます。<skin-family>の値をskyros、simpleに変更することも、カスタム・スキン定義に変更することもできます。カスタム・スキンの作成および使用の詳細は、「スタイルおよびスキンを使用した外観のカスタマイズの概要」を参照してください。
次のコードに示すように、スキン・ファミリ値にEL式を使用できます。
<skin-family>#{prefs.proxy.skinFamily}</skin-family>
日付を処理して表示するためのタイムゾーンと、2桁のみの年を解析するための年オフセットを設定するには、次の要素を使用します。
<time-zone>: 値が設定されていない場合、ADF Facesではデフォルトで、アプリケーション・サーバーで使用されているタイムゾーンが使用されます。必要な場合は、TimeZoneと評価されるEL式を使用できます。この値は、文字列をDateに変換する際にorg.apache.myfaces.trinidad.converter.DateTimeConverterで使用されます。
<two-digit-year-start>: この値は、グレゴリオ暦の年で指定します。org.apache.myfaces.trinidad.converter.DateTimeConverterで使用されて、2ケタの年のStringから日付を作成するための100年の範囲を決定します。結果のDateはtwo-digit-year-startとtwo-digit-year-start + 100の間にあります。この要素は、値が設定されない場合、デフォルトで1950年に設定されます。必要な場合は、静的整数値またはIntegerオブジェクトに評価されるEL式を使用できます。
たとえば、値が指定されていない場合は、100年の範囲はデフォルトで[1950, 2050]になり、日付01/01/10は01/01/2010に解決されます。
デフォルトでは、<debug-output>要素はfalseです。<debug-output>をtrueに設定すると、ADF Facesでデバッグ出力が拡張されます。デバッグ出力に次の機能が追加されます。
自動インデント
HTMLのブロックを処理したコンポーネントを識別するコメント。
対応していない要素、1つの要素内での同じ属性の繰り返しの使用またはその他の不適切なマークアップの問題の検出。
一般的なHTMLエラー(他の<form>タグ内の<form>タグ、無効な場所に使用されている<tr>タグや<td>タグなど)の検出。
パフォーマンスに関するヒント
デバッグにより、パフォーマンスが影響を受けます。本番環境ではこのパラメータをfalseに設定します。
<accessibility-mode>を使用して、アプリケーションでのアクセシビリティ・サポートのレベルを定義します。サポートされている値は次のとおりです。
default: 出力でアクセシビリティ機能がサポートされます。
inaccessible: 出力サイズを最適化するため、アクセシビリティ固有の構成要素は削除されます。
screenReader: スクリーン・リーダーを使用する際の動作を改善するために、アクセシビリティ固有の構成が追加されます。
注意:
スクリーン・リーダー・モードは、他のユーザーには使用しにくくなる場合があります。たとえば、アクセシビリティ・モードがスクリーン・リーダー・モードに設定されていると、アクセス・キーは表示されません。
<accessibility-profile>を使用して、アプリケーションで使用する色のコントラストを構成します。サポートされる値はhigh-contrastで、デフォルト・コントラストではなく高コントラストを使用してアプリケーションが表示されます。
ADF Facesのデフォルトのページ・レンダリング方向は、ブラウザで使用されている言語に基づきます。しかし、次のコードに示すように、Booleanオブジェクトに評価されるEL式、あるいはtrueまたはfalseを使用して<right-to-left>要素にデフォルト・ページ・レンダリング方向を明示的に設定できます。
<!-- Render the page right-to-left for Arabic -->
<!-- and left-to-right for all other languages -->
<right-to-left>
#{view.locale.language=='ar' ? 'true' : 'false'}
</right-to-left>
通貨フィールドの書式設定に使用する通貨コードを指定する場合、および数値の桁と小数点に使用する区切り記号を定義する場合、次の要素を使用します。
<currency-code>: コンバータで明示的に通貨コードが指定されていない通貨フィールドの書式設定に、org.apache.myfaces.trinidad.converter.NumberConverterで使用されるデフォルトのISO 4217通貨コードを定義します。静的値またはStringオブジェクトと評価されるEL式を使用します。次に例を示します。
<!-- Set the currency code to US dollars. --> <currency-code>USD</currency-code>
<number-grouping-separator>: 数値の桁区切りに使用される文字(カンマなど)を定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。静的値またはCharacterオブジェクトと評価されるEL式を使用できます。設定されている場合、この値が、解析および書式設定時にorg.apache.myfaces.trinidad.converter.NumberConverterクラスで使用されます。
たとえば、アプリケーションでドイツ語が使用されている期間に数値グループ区切りを設定する場合は、次のコードを使用します。
<!-- Set the number grouping separator to period for German -->
<!-- and comma for all other languages -->
<number-grouping-separator>
#{view.locale.language=='de' ? '.' : ','}
</number-grouping-separator>
<decimal-separator>: 小数点に使用されるセパレータ(たとえば、ピリオドやカンマなど)を定義します。ADF Facesでは現在のロケールから区切り文字が自動的に導出されますが、この要素に値を指定して、デフォルトをオーバーライドできます。静的値またはCharacterオブジェクトと評価されるEL式を使用できます。設定されている場合、この値が、解析および書式設定時にorg.apache.mtfaces.trinidad.converter.NumberConverterクラスで使用されます。
たとえば、アプリケーションでドイツ語が使用されている際に小数区切りをカンマに設定する場合は、次のコードを使用します。
<!-- Set the decimal separator to comma for German -->
<!-- and period for all other languages -->
<decimal-separator>
#{view.locale.language=='de' ? ',' : '.'}
</decimal-separator>
ADF FacesおよびMyFaces Trinidadは、デフォルトでは、ローカライズされたテキストに使用されているのと同じロケール(デフォルトではブラウザのロケール)で、日付(週の最初の曜日も)と数値を書式設定します。ただし、その他のロケールで日付と数値を書式設定する場合は、IANA形式のコード(ja、fr-CAなど)を値とする<formatting-locale>要素を使用できます。この要素の内容は、IANA文字列を指すEL式またはjava.util.Localeオブジェクトです。
ADF Facesで使用される出力モードを変更するには、次のいずれかの値を使用して<output-mode>要素を設定します。
default: デフォルト・ページ出力モード(通常、表示)。
printable: 印刷可能ページに適した出力モード。
email: ページのコンテンツを電子メールするのに適した出力モード。
ADF Facesのデフォルトでは、アクティブなPageFlowScopeインスタンスの最大数が常に15に設定されます。この数を変更するには、<page-flow-scope-lifetime>要素を使用します。その他の要素とは違い、静的な値を使用する必要があり、EL式はサポートされていません。
ファイルのアップロード・パラメータはweb.xmlに構成できますが、trinidad-config.xmlにファイルのアップロード・パラメータを構成すると、値の設定を変更するために実行時の検証が可能なEL式がサポートされるという利点があります。次の要素がサポートされています。
<uploaded-file-processor>: このパラメータは、org.apache.myfaces.trinidad.webapp.UploadedFileProcessorインスタンスを実装するクラスの名前にする必要がありますが、このインスタンスにより、個々のアップロード・ファイルが着信リクエストから取得される際に処理され、そのコンテンツを残りのリクエストで使用できるようになります。ほとんどの開発者とっては、デフォルトのUploadedFileProcessorで十分ですが、大規模ファイルのアップロードをサポートする必要のあるアプリケーションでは、リクエスト中にApache Trinidadで一時記憶域を処理するかわりに、ファイルをただちに最終的な宛先に格納することでパフォーマンスが向上します。
<uploaded-file-max-memory>: ディスクへのデータの書込みが開始されるまでに、ファイルのアップロード・プロセス中に使用されるメモリーの最大量を設定するために使用します。この設定は、web.xmlのorg.apache.myfaces.trinidad.UPLOAD_MAX_MEMORYの設定を直接オーバーライドします。この値は、ハードコードすることも、Longオブジェクトを戻すEL式を使用して明示的に構成することも可能です。
<uploaded-file-max-disk-space>: EOFExceptionがスローされるまでに、アップロード・ファイルが使用できるディスク領域の最大量を設定するために使用します。この設定は、web.xmlのorg.apache.myfaces.trinidad.UPLOAD_MAX_DISK_SPACEの設定を直接オーバーライドします。この値は、ハードコードすることも、Longオブジェクトを戻すEL式を使用して明示的に構成することも可能です。
<uploaded-file-max-disk-space>: アップロード・ファイルが格納されるデフォルトの場所を変更するために使用します。この設定は、web.xmlのorg.apache.myfaces.trinidad.UPLOAD_TEMP_DIRの設定を直接オーバーライドします。この値は、ハードコードすることも、Stringオブジェクトを戻すEL式を使用して明示的に構成することも可能です。
大半のアプリケーションでは、ADF Facesで用意されているデフォルトのUploadedFileProcessorインスタンスを置き換える必要はありません。しかし、アプリケーションで非常に大きなファイルのアップロードをサポートする必要がある場合、またはファイルのアップロードに大きく依存する場合、デフォルト・プロセッサをカスタムUploadedFileProcessor実装で置き換えることができます。
たとえば、ADF Facesでリクエスト時に一時格納を処理するかわりに、最終的な格納場所にファイルを即座に格納する実装を使用することにより、パフォーマンスを向上させることができます。デフォルト・プロセッサを置き換えるには、次のコードに示すように、<uploaded-file-processor>要素を使用してカスタム実装を指定します。
<uploaded-file-processor> com.mycompany.faces.myUploadedFileProcessor </uploaded-file-processor>
ADF Facesのバリデータとコンバータでは、サーバー側の検証および変換と同様に、クライアント側の検証および変換がサポートされます。ADF Facesのクライアント側のバリデータおよびコンバータは、サーバー側のバリデータおよびコンバータと同じように動作しますが、クライアントではJavaScriptが使用されます。
JavaScript対応のバリデータとコンバータは、フォームの送信時にクライアントで実行されるため、サーバーへのラウンドトリップなしにエラーが捕捉されます。
リッチ・クライアント版のADF Facesでは、<client-validation-disabled>構成要素はサポートされていません。つまり、ADF Facesアプリケーションでは、クライアント側検証と変換を無効にできません。
Trinidad構成オプションの一部は、システム・プロパティによって設定されます。高可用性テストをサポートするには、org.apache.myfaces.trinidad.CHECK_STATE_SERIALIZATIONを使用します。システム・プロパティで、次のものを含む、大/小文字が区別されないカンマ区切りの一連の値を渡します。
NONE: 状態のシリアライズ・チェックは実行されません(デフォルト)。
ALL: 使用可能なすべてのテストを実行します(NONEが優先されるため、NONEも指定されている場合は除きます)。
SESSION: シリアライズ可能なオブジェクトのみがセッション・マップに配置されていることをテストするために、ExternalContextにより戻されたセッション・マップをラップし、オブジェクトがシリアライズ可能でない場合はCastCastExceptionをスローします。
TREE: 状態保存中にコンポーネントの状態のシリアライズを積極的に試行し、シリアライズに失敗した場合は例外をスローします。
COMPONENT: 問題のあるコンポーネント(遅い)を識別するために、状態保存中に、各コンポーネント・サブツリーの状態のシリアライズを積極的に試行します。
PROPERTY: 問題のあるプロパティ(遅い)を識別するために、状態保存中に、各プロパティ値のシリアライズを積極的に試行します。
たとえば、セッションとJSFの状態がシリアライズ可能な場合は、システム・プロパティを次のように設定することで、テスターが検証を開始します。
-Dorg.apache.myfaces.trinidad.CHECK_STATE_SERIALIZATION=session,tree
JSFの状態のシリアライズが検出された場合は、次のように、コンポーネントとプロパティのフラグが有効化された状態でテストが再実行されます。
-Dorg.apache.myfaces.trinidad.CHECK_STATE_SERIALIZATION=all
JDeveloperでは、ADF Facesコンポーネントを使用してJSFページを作成する場合、altaスキン・ファミリがデフォルトで使用されます。「trinidad-config.xmlでのADF Facesの機能の構成方法」での説明のとおり、スキン・ファミリはtrinidad-config.xmlファイルで構成されます。アプリケーションにカスタム・スキンを使用する場合は、カスタム・スキンのアプリケーションでの登録に使用されるtrinidad-skins.xmlファイルを作成します。
カスタム・スキンの作成の詳細は、「スタイルおよびスキンを使用した外観のカスタマイズ」を参照してください。
ADF Facesでは、EL暗黙オブジェクトrequestContextを使用して、trinidad-config.xmlファイルで定義されている構成プロパティから値を取得できます。requestContext暗黙オブジェクトはorg.apache.myfaces.trinidad.context.RequestContextクラスのインスタンスで、java.util.Mapタイプのいくつかのプロパティを公開して、JSF EL式によるコンテキスト・オブジェクト・プロパティ値の取得を可能にします。
たとえば、EL式#{requestContext}はRequestContextオブジェクト自体を返し、EL式#{requestContext.skinFamily}は、<skin-family>要素の値をtrinidad-config.xmlファイルから返します。
EL式を使用して、コンポーネント属性値をrequestContext暗黙オブジェクトのプロパティにバインドすることもできます。たとえば、次のEL式では、<currency-code>プロパティがJSF ConvertNumberコンポーネントのcurrencyCode属性値にバインドされています。
<af:outputText>
<f:convertNumber currencyCode="#{requestContext.currencyCode}"/>
</af:outputText>
次に示す、requestContext暗黙的オブジェクト・プロパティを使用できます。
requestContext.accessibilityMode: <accessibility-mode>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.agent: リクエストを行っているクライアント・エージェントを示し、レンダリングされた出力を表示するオブジェクトを返します。agentオブジェクトのプロパティは次のとおりです。
agentName: エージェント・ブラウザの正規の名前(gecko、ieなど)。
agentVersion: エージェント・ブラウザのバージョン番号。
capabilities: 現在のクライアント・リクエストに対する機能名(高さ、幅など)とその値をマップします。
hardwareMakeModel: ハードウェア・メーカーとモデルの正規の名前(nokia6600、sonyericssonP900など)。
platformName: プラットフォームの正規の名前(ppc、windows、macなど)。
platformVersion: プラットフォームのバージョン番号。
type: エージェント・タイプ(desktop、pda、phoneなど)。
requestContext.clientValidationDisabled: <client-validation-disabled>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.colorPalette: カラー・パレット名をキーとし、カラー・パレットを結果として返すMapを返します。各カラー・パレットは、java.awt.Colorオブジェクトの配列です。4つの標準カラー・パレットへのアクセスを提供します。
web216: 216のWebセーフ・カラー
default49: 全透明のエントリを1つ含む49色のパレット
opaque40: 全透明のエントリを含まない49色のパレット
default80: 全透明のエントリを1つ含む80色のパレット
requestContext.currencyCode: <currency-code>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.debugOutput: <debug-output>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.decimalSeparator: <decimal-separator>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.formatter: 再帰的Map構造を使用してメッセージを書式設定するMapオブジェクトを返します。最初のキーはメッセージの書式設定マスクで、2番目のキーはメッセージの最初のパラメータです。
requestContext.helpSystem: ヘルプ・システム・プロパティをキーとして受け入れ、URLを結果として返すMapオブジェクトを返します。たとえば、EL式#{requestContext.helpSystem['frontPage']}は、ヘルプ・システムのフロント・ページへのURLを返します。trinidad-config.xmlファイルに<oracle-help-servlet-url>要素を構成してあることを前提とします。
requestContext.helpTopic: トピック名をキーとして受け入れ、URLを結果として返すMapオブジェクトを返します。たとえば、EL式#{requestContext.helpTopic['foo']}は、ヘルプ・トピックfooへのURLを返します。trinidad-config.xmlファイルに<oracle-help-servlet-url>要素を構成してあることを前提とします。
requestContext.numberGroupingSeparator: <number-grouping-separator>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.oracleHelpServletUrl: <oracle-help-servlet-url>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.outputMode: <output-mode>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.pageFlowScope: pageFlowScopeオブジェクトでのオブジェクトのマップを返します。
requestContext.rightToLeft: <right-to-left>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.skinFamily: <skin-family>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.timeZone: <time-zone>要素の値をtrinidad-config.xmlファイルから返します。
requestContext.twoDigitYearStart: <two-digit-year-start>要素の値をtrinidad-config.xmlファイルから返します。
プロパティの完全なリストについては、Oracle ADF Faces Java APIリファレンスの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())
{
.
.
.
}