この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

インターフェースパラメータによるリモートメソッドの宣言

具象クラスに制限するのではなく、インターフェースパラメータと戻り値のデータ型を使用して @RemoteAction メソッドを宣言できます。これにより、たとえば、パッケージプロバイダは、リモートメソッドと関連付けられたインターフェースをパッケージ化できます。登録者組織は、パッケージ化されたインターフェースを実装する独自のクラスに渡すことによって、Visualforce ページからコールできます。
次に、簡単な例を示します。
1public class RemoteController {
2    public interface MyInterface { String getMyString(); }
3    public class MyClass implements MyInterface { 
4        private String myString; 
5        public String getMyString() { return myString; }
6        public void setMyString(String s) { myString = s; }
7    }
8    
9    @RemoteAction
10    public static MyInterface setMessage(MyInterface i) {
11        MyClass myC = new MyClass();
12        myC.setMyString('MyClassified says "' + i.getMyString() + '".');
13        return myC;
14    }
15}
JavaScript Remoting コールからインターフェースパラメータを宣言する @RemoteAction に送信されるオブジェクトは apexType 値を含む必要があります。この値は、具象クラスへの完全修飾パス、つまり、namespace[.BaseClass][.ContainingClass].ConcreteClass である必要があります。たとえば、上記のコントローラへの JavaScript Remoting コールを実行するには、次のコードを使用します。
1Visualforce.remoting.Manager.invokeAction(
2    '{!$RemoteAction.RemoteController.setMessage}',
3    {'apexType':'thenamespace.RemoteController.MyClass', 'myString':'Lumos!'}, 
4    handleResult
5);
組織内にクラス定義がある場合は、Remoting コールを単純化し、デフォルトの c 名前空間も使用できます。
1RemoteController.setMessage(
2    {'apexType':'c.RemoteController.MyClass', 'myString':'Lumos!'}, 
3    handleResult
4);