部分イベントおよびADF Facesコマンド・コンポーネントについて

ADF Facesのコマンド・ボタンおよびリンクは、部分イベントを生成できます。commandButtonまたはcommandLinkpartialSubmit属性によって、アクションの実行に部分ページ発行が使用されるかどうかが決定されます。partialSubmittrueの場合、ADF Facesでは、部分ページ発行によってアクションが実行されます。このように、コマンド・ボタンまたはリンクを使用して、発行時にページ全体を再描画せずにページの一部を更新できます。

デフォルトでは、partialSubmitの値はfalseであり、部分ページ・イベントの応答で全ページ・レンダリングが使用されることを意味します。全ページ・レンダリングは、別のページに移動したとき、あるいはクライアントのブラウザまたはプラットフォームで部分ページ・レンダリングがサポートされていない場合にも自動的に使用されます。

たとえば、アクティブになると時間が表示されるコマンド・ボタンがあるとします。

<af:panelPage title="Title 1">
  <af:outputFormatted styleUsage="instruction" value="Click button to see time update"/>
  <af:panelGroup layout="horizontal">
    <af:commandButton immediate="true"
                      partialSubmit="true"
                      text="partialSubmit Button"
                      actionListener="#{partialBean.partial}"/>
    <af:objectSpacer width="30" height="10"/>
    <af:panelGroup>
      <af:panelLabelAndMessage label="time button is clicked: ">
        <af:outputFormatted id="cmdTarget"
                            styleUsage="instruction"
                            binding="#{partialBean.linkUpdate}"
                            value="never">
          <f:convertDateTime pattern="HH:mm:ss"/>
        </af:outputFormatted>
      </af:panelLabelAndMessage>
    </af:panelGroup>
  </af:panelGroup>
</af:panelPage>    
...
private CoreOutputFormatted linkUpdate;

public void setLinkUpdate(CoreOutputFormatted linkUpdate)
{
  this.linkUpdate = linkUpdate;
}

public CoreOutputFormatted getLinkUpdate()
{
  return linkUpdate;
}

public void partial(ActionEvent actionEvent)
{
  linkUpdate.setValue(new Date());
  AdfFacesContext.getCurrentInstance().addPartialTarget(linkUpdate);
}
...    

この例で、commandButtonコンポーネントのpartialSubmit属性はtrueに設定されていて、そのactionListener属性はマネージドBeanのアクション・リスナー・メソッドにバインドされています。このメソッドによって、linkUpdateというプロパティの値として新しい時間が設定されます。(新しい時間を表示する)outputFormattedコンポーネントのbinding属性は、アクション・リスナー・メソッドによって更新されるlinkUpdateプロパティにバインドされています。outputFormattedのコンポーネント・インスタンスは、(コンポーネントoutputFormattedと型が同じ)linkUpdateプロパティにバインドされているため、アクション・リスナー・メソッドによって、コンポーネント・インスタンスにアクセスし、コンポーネントのvalue属性を更新して新しい時間を表示できます。AdfFacesContext.addPartialTargetメソッドでは、部分ターゲットとしてコンポーネントが追加されます。これは、部分ターゲットとして登録されているコンポーネントのみが、部分イベントの応答でレンダリングされることを意味します。

ターゲット・コンポーネントが1つ以上のコマンド・コンポーネントで部分イベントをリスニングできるようにするには、ターゲット・コンポーネントのpartialTriggers属性に、対象の(トリガー)コマンド・コンポーネントのIDをリストします。複数のIDをリストする場合はスペースで区切ります。


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