ADF Facesでの部分ページ・レンダリングのサポートについて

部分ページ・レンダリング(PPR)を使用すると、ページ内の小さい領域を、ページ全体を再描画せずにリフレッシュできます。たとえば、ユーザーが入力コンポーネントで選択または入力した内容を出力コンポーネントで表示する場合があります。または、コマンド・リンクやボタンで、別のコンポーネントを更新する場合があります。

PPRは、現在次のブラウザでサポートされています。

その他のプラットフォームの場合、ADF Facesでは自動的に全ページ・レンダリングが実行されます。

JDeveloperで、JSFページにADF Facesコンポーネントを初めて追加すると、<afh:html><afh:head>および<afh:body>タグが自動的に挿入されます。この<afh:body>タグによって、ページ内でPPRが使用可能になります。ページ内で<afh:body>を使用できない場合は、かわりにPPRブロックの使用を検討してください。

多くのADF Facesコンポーネントは、そのアクションにPPRを使用します。たとえば、tableshowDetailおよびshowDetailHeaderに加え、treetreeTablemenuTreeおよびpageコンポーネントが指定されているコンポーネントのツリー・ファミリは、そのほとんどのイベントにPPRを使用します。

部分ページ・レンダリングでは、主に次の3つのコンポーネント属性が使用されます。

autoSubmit
入力コンポーネント(inputTextselectManyListboxなど)または表選択コンポーネント(tableSelectManyなど)のautoSubmit属性がtrueに設定されていて、適切なアクション(値の変更など)が発生すると、コンポーネントは、そのコンポーネントが挿入されたフォームを自動的に発行します。PPRの場合は、この属性をリスナー属性と併用できます。リスナー属性は、発行に基づいてイベントが起動されると、なんらかのロジックを実行するメソッドにバインドされています。
partialSubmit
コマンド・コンポーネントのpartialSubmit属性がtrueに設定されている場合は、ボタンまたはリンクがクリックされるとページが部分的に発行されます。この属性は、ボタンまたはリンクがクリックされたときになんらかのロジックを実行するactionListenerメソッドと併用できます。「部分イベントおよびADF Facesコマンド・コンポーネントについて」を参照してください。
partialTriggers
この属性の値は他のコンポーネントのIDです。IDが複数の場合は各IDの間にスペースを使用します。これらのコンポーネントの更新時には(たとえば、autoSubmitを介して)、このコンポーネントも更新されます。レンダリングされたコンポーネントはすべてpartialTriggers属性をサポートします。

たとえば、ユーザーがラジオ・ボタン・リストから選択した内容を出力コンポーネントで、次のように表示するとします。

3つのラジオ・ボタン(2番目のボタンが選択され、下部に選択に関するノートがある)

この例のselectOneRadioコンポーネント(トリガー)には、Trueに設定されたautoSubmit属性と、マネージドBeanメソッドにバインドされたvalueChangeListener属性があります。このメソッドは、選択した値のラベルを取得し、そのラベルをradioValueと呼ばれるプロパティに値として設定します。選択内容(ターゲット)を表示するoutputTextコンポーネントには、トリガー・コンポーネントのIDに設定されたpartialTrigger属性と、valueChangeListenerメソッドによって更新されたradioValueプロパティにバインドされた値があります。

JSPのコードは、次のようになります。

<h:form>
  ...
  <af:selectOneRadio label="Select One:"
	                    valueChangeListener="#{pprBean.valueChanged}"
	                    autoSubmit="true" 
                     id="select1">
	   <af:selectItem label="Choice 1" value="1"/>
	   <af:selectItem label="Choice 2" value="2"/>
	   <af:selectItem label="Choice 3" value="3"/>
  </af:selectOneRadio>
  <af:outputLabel value="You've selected:"/>
  <af:outputText value="#{pprBean.radioValue}" 
                 partialTriggers="select1"/>
																													      
  ...
</h:form>    

たとえば、ユーザーが2番目のラジオ・ボタンを選択すると、出力テキストには「You've selected: Choice 2」と表示されます。

注意: スクリーン・リーダーでは、部分ページ・リクエストで全ページの再読込みは実行されません。PPRによって、スクリーン・リーダーは部分アクションを起動したコンポーネントから始まるページを読み込みます。したがって、ターゲット・コンポーネントは、部分リクエストを起動するコンポーネントの後に配置する必要があります。このようにしないと、更新したターゲットがスクリーン・リーダーに読み込まれません。

コンポーネントを他のコンポーネントの変化に対応させるために、partialTriggers属性を使用する必要はありません。かわりに、ターゲット・コンポーネントの値をbinding属性を使用してプログラムによって変更し、ターゲットのインスタンスを、トリガーによって更新されたプロパティにバインドできます。

PPRの詳細な例は、「ADF Facesのデモ・ファイルについて」の部分ページ・レンダリング機能のデモを参照してください。


自動発行およびADF Faces入力コンポーネントについて
JSFでのイベントおよびイベント・リスナーの使用
タグ属性のバインドとコンポーネント・インスタンスのバインドの比較について