【Salesforce】apex:actionSupportを使用する

【Salesforce】apex:actionSupportを使用する

【Salesforce】apex:actionSupportを使用する

Visualforceの開発で画面の一部を変更したい場合には、サーバーへのアクセスが必要になります。

その際に使うのは、大体が「apex:actionFunction」か「apex:commandButton」だったのですが、他にもあるんですよね。

今更ながら「apex:actionSupport」を使い始めたのでメモです。
https://developer.salesforce.com/docs/atlas.ja-jp.pages.meta/pages/pages_compref_actionSupport.htm

「apex:actionFunction」がJavaScriptの呼び出しを行うように使用するのに対して、「apex:actionSupport」はタグの要素に対して動作を設定できます。

たとえば、「apex:actionFunction」で、このように書いていた動作があったとします。

<apex:outputPanel id="Target" layout="block" onclick="refreshTarget();" >
  <apex:outputText value="クリック" />
</apex:outputPanel>

<apex:actionFunction name="refreshTarget" rerender="Target" />

「apex:actionSupport」を使うことで

<apex:outputPanel id="Target" layout="block" onclick="action" >
  <apex:outputText value="{!value}" />
  <apex:actionSupport event="onclick" rerender="Target" />
</apex:outputPanel>

と、このように記述することが出来ます。

例を書いてみたものの、大変分かりづらいですね。

特定の要素のみを更新する処理が複数ある場合、そのたびに「」が増えるのは嬉しくありません。

「apex:actionSupport」であれば、特定の要素を更新する処理だけに動きをつけることが出来ます。

Visualforceで連動選択リストを使用するときが、かなり便利になりますね。

親選択リストが変更された場合に子選択リストを更新する場合の例です。

<apex:outputLabel for="ParentSelect" value="親選択リスト" />
<apex:inputField id="ParentSelect" value="{!obj.ParentSelect__c}" >
  <apex:actionSupport event="onchange" rerender="ChildSelect" />
</apex:inputField>

<apex:outputLabel for="ChildSelect" value="子選択リスト" />
<apex:inputField id="ChildSelect" value="{!obj.ChildSelect__c}" />

これだけで済むのです。

とっても簡単ですね。

&nbsp;

こんなに便利なものを今までスルーしていたのはもったいないことでした。

「apex:actionFunction」と使い分けていきたいですね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です