簡単なRemoteActionの使い方


経緯

RemoteActionの呼び出し方をよく忘れるため備忘録として記載。

RemoteActionとは

Javascriptから呼び出すことができるControllerクラスのメソッド。受け取りたい値(引数)とJavascriptに渡したい値(戻り値)を指定することができる。FunctionActionとは違いStaticメソッドのためメンバー変数の値を変更することができない。

RemoteActionの使用方法

以下の記載方法でJavascriptから呼び出すことができる。

{!$RemoteAction.コントローラ名.リモートアクション名}

RemoteActionメソッドの作成

SampleController.apxc
public class SampleController {
    /**
     * 挨拶を返すメソッド
     * @param  name ユーザ名
     * @return 挨拶文
     **/
    @RemoteAction
    public static String sampleMethod(String name) {
        return 'Hello ' + name + '!!'; 
    }
}

RemoteActionの使用方法

Sample.vfp
<apex:page controller="SampleController" >
    <script type="text/javascript">
        // 挨拶をアラートで表示
    	function callRemoteAction() {
            {!$RemoteAction.SampleController.sampleMethod}('Sigulog' ,function(result, event){
           		if(event.status) {
                    alert(result);
                }
            });
        }
    </script>
    <apex:form>
        <apex:commandButton value="Remote Action Button" onClick="callRemoteAction(); return false;"/>     
    </apex:form>
</apex:page>

実行結果

参考:Visualforce 開発者ガイド - JavaScript Remoting の例

追記

引数なしのメソッドを呼び出す場合
        function callRemoteAction() {
            {!$RemoteAction.SampleController.sampleMethod}(function(result, event){
           		if(event.status) {
                    alert(result);
                }
            });
        }
引数が2つあるメソッドを呼び出す場合
        function callRemoteAction() {
            {!$RemoteAction.SampleController.sampleMethod}('引数1', '引数2', function(result, event){
           		if(event.status) {
                    alert(result);
                }
            });
        }