2021/06/28

Salesforceのactionfunctionとは?概要や使い方をご紹介

 
  

Salesforceのactionfunctionとは?

Salesforceのactionfunctionとは、AJAX要求を使用したApexクラスのメソッドを直接呼び出すことができるコンポーネント(ソフトウエアの部品)のことです。 AJAX(エイジャックス)とは「Asynchronous JavaScript And XML」の略で、非同期通信や動的にWebページを書き換える機能のことです。 actionfunctionコンポーネントは、<apex:form>コンポーネントの子にする必要があり、また、actionfunctionコンポーネントと呼び出し元の関連付けは、パラメータの順序に従うため、<apex:param>の順序が呼び出し元の引数リストと一致している必要があります。 actionfunctionコンポーネントでは、JavaScriptコードのブロックから呼び出せる新しいJavaScript関数を定義します。

Salesforceのactionfunctionの使い方

以下は、Salesforceのactionfunctionを使用したサンプルコードです。 <apex:actionFunction>は、<apex:form>の子とする必要があります。サンプルコードの後に、サンプルコードで使用しているactionfunctionの「name属性」、「action属性」、「rerender属性」、「status属性」について説明します。
<!-- Page: -->
<apex:page controller="exampleCon">
    <apex:form>
        <!-- Define the JavaScript function sayHello-->
        <apex:actionFunction name="sayHello" action="{!sayHello}" rerender="out" status="myStatus"/>
    </apex:form>

    <apex:outputPanel id="out">
    <apex:outputText value="Hello "/>
    <apex:actionStatus startText="requesting..." id="myStatus">
        <apex:facet name="stop">{!username}</apex:facet>
    </apex:actionStatus>
    </apex:outputPanel>

    <!-- Call the sayHello JavaScript function using a script element-->
    <script>window.setTimeout(sayHello,2000)</script>

    <p><apex:outputText value="Clicked? {!state}" id="showstate" /></p>

    <!-- Add the onclick event listener to a panel. When clicked, the panel triggers
    the methodOneInJavascript actionFunction with a param -->
    <apex:outputPanel onclick="methodOneInJavascript('Yes!')" styleClass="btn">
        Click Me
    </apex:outputPanel>
    <apex:form>

    <apex:actionFunction action="{!methodOne}" name="methodOneInJavascript" rerender="showstate">
        <apex:param name="firstParam" assignTo="{!state}" value=" />
    </apex:actionFunction>
    </apex:form>
</apex:page>

/*** Controller ***/
public class exampleCon {
    String uname;

    public String getUsername() {
        return uname;
    }

    public PageReference sayHello() {
        uname = UserInfo.getName();
        return null;
    }

    public void setState(String n) {
        state = n;
    }

    public String getState() {
        return state;
    }

    public PageReference methodOne() {
        return null;
    }

    private String state = 'no';
}

actionfunctionの「name属性」

Salesforce actionfunctionの「name属性」は、JavaScriptコードから呼び出されるときの関数名を指定します。 name属性はString型です。必ず指定する必要があります。JavaScriptコードで呼び出されるときのJavaScript関数の名前を定義します。呼び出された場合、action属性で指定しているメソッドを実行します。 その後、actionメソッドが終了すると、rerender属性で指定しているコンポーネントを更新します。

actionfunctionの「action属性」

Salesforce actionfunctionの「action属性」は、呼び出されたときに実行するメソッドを指定します。 action属性はApexPages.Action型です。DOMイベントによってactionfunctionが呼び出されたときに実行するメソッドを指定します。指定は差し込み構文を使用します。例えば、functionという名前のメソッドだった場合、「action=”{!function}”」のように指定します。

actionfunctionの「rerender属性」

Salesforce actionfunctionの「rerender属性」は、メソッド実行後に更新するコンポーネントを指定します。 rerender属性はObject型です。action属性に指定したメソッドを実行した後に更新するコンポーネントのIDを指定します。

actionfunctionの「status属性」

Salesforce actionfunctionの「status属性」は、状況表示コンポーネントのIDを指定します。 status属性はString型です。AJAX更新要求の状況表示するコンポーネントのIDを指定します。状況表示するコンポーネントは、「actionStatusコンポーネント」です。

Salesforce その他のactionについて

Salesforceのactionには、actionfunction以外にもいくつかの種類があります。 apex:action~で指定するタグは以下の5つあります。 1.apex:actionFunction AJAX要求を使用したApexクラスのメソッドを呼び出すことができます。 2.apex:actionRegion 指定したコンポーネントのみを処理します。 3.apex:actionPoller 指定した間隔でAJAX要求を送信します。 4.apex:actionStatus AJAX要求の現在の状況を表示することができます。 5.apex:actionSupport 他のコンポーネントに対して、AJAXサポート追加するコンポーネントです。

Salesforceのactionfunctionを活用しよう!

今回は、Salesforceのactionfunctionについて説明しました。 actionfunctionを使用すれば、AJAX要求を使用したApexクラスのメソッドを呼び出すことが可能となります。JavaScript RemotiongでもApexクラスのメソッドを呼び出すことは可能ですが、actionfunctionの方が使いやすく、記述するコードも少なくなります。 この機会に、actionfunctionについて理解しておきましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】