インターフェースパラメータによるリモートメソッドの宣言
具象クラスに制限するのではなく、インターフェースパラメータと戻り値のデータ型を使用して @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);