ADF UIXで記述した部分・ページレンダリング(PPR)機能では、ページの一部分を再レンダリング(リフレッシュ)できるため、全ページを再描画することも、カスタムJavaScriptコードを記述する必要もありません。
UIXでは非表示インライン・フレーム(iframe)を使用してPPR機能を実装します。IframeはブラウザとWebアプリケーションとの間の通信チャネルとして機能するため、UIXは部分ページ・イベントを送信し、バックグラウンドでは現在のページのコンテンツは破棄することなくページ・コンテンツの一部分を再レンダリングします。
PPRは、現在次のブラウザでサポートされています。
その他のプラットフォームの場合、UIXでは自動的にページの全体レンダリングが実行されます。
一部のUIXコンポーネントではPPRがサポートされていません。今回のリリースでPPRに対応しているコンポーネントは次のとおりです。
最初のページでユーザーがPPR対応コンポーネントとの対話処理に入ると、UIX提供のJavaScriptイベント・ハンドラにより、非表示iframでナビゲーションが強制実行されます。更新したコンテンツに対する部分ページ・イベント要求が、ブラウザからアプリケーションに送信されます。このイベントは、gotoイベントとvalueイベント・パラメータを持ち、全ページ・イベント要求に似ています。部分ページ・イベントも、レンダリング・モードのタイプや、再描画の対象となる部分ターゲット・ノードのセットを識別する他のイベント・パラメータを送ります。
アプリケーションが部分ページ・イベント要求を受け取ると、レンダリングすべき部分ターゲットのセットが決定され、リフレッシュ用のコンテンツが生成されますが、ブラウザのiframeに送り返されるのは部分ターゲットで生成されたコンテンツのみです。
ブラウザが部分ページ・レスポンスを受け取ると、各部分ターゲットの新規コンテンツが非表示iframeからメイン・ブラウザ・ウィンドウにコピーされて、既存のコンテンツが部分ターゲットごとに置換されます。
PPRが適切に動作するためには、次の条件を満たしておく必要があります。
<body>
要素を用意しておきます。この要素はUIXにより自動的にUIX XMLページに追加されます。UIX JSPの開発者を考慮して、<uix:body>
を明示的に使用する必要があります。
document.write()
またはdocument.writeln()
をコールして明示的に識別しておきます。デフォルトでは、<script>
要素のgeneratesContent
属性はfalseに設定されています(つまり、このスクリプトではコンテンツは生成されません)。document.write()
またはdocument.writeln()
をコールするスクリプトでは、必ずgeneratesContent
属性をtrueに設定しておきます。次に例を示します。
...
<script generatesContent="true">
document.write("Hello there");
</script>
...
注意: デフォルトでは、PPRはアクセシビリティ・モードにかかわらず有効な状態になっています。PPRを無効にするには、次の構成パラメータをuix-config.xml
ファイルに追加します。
...
<default-configuration>
<disable-partial-rendering>true</disable-partial-rendering>
</default-configuration>
...
PPR対応のコンポーネントでは次の属性を使用します。
partialRenderMode
: PPRが有効な状態かどうかを指定します。有効値は、none
、self
およびmultiple
です。デフォルトでは、PPRは無効になっています。PPRを使用してコンポーネント自体を更新するよう指定するには、この属性をself
に設定します。複数の部分ターゲットを更新または再レンダリングするよう指定するには、値をmultiple
に設定し、partialTargets
属性で部分ターゲットのリストを指定します。
partialTargets
: 再レンダリングする部分ターゲットのセットを指定します。デフォルトでは、部分ページ・イベントを起動するコンポーネントのIDはこのリストに自動的に組み込まれます。
スクリーン・リーダーでは、部分ページの要求で全ページの再読込みは行われません。PPRにより、スクリーン・リーダーは部分アクションを起動したコンポーネントから始まるページを読み込みます。したがって、部分ページ・イベント要求を起動するコンポーネントの後に部分ターゲットを置く必要があります。このようにしなかった場合は、更新した部分ターゲットはスクリーン・リーダーで読み込まれません。
Copyright © 1997, 2004, Oracle. All rights reserved.