問題
開発者が、@remoteActionデコレータを使用してグローバルなサーバー側メソッドを呼び出そうとするとエラーが発生します。このエラーを解決するにはどうすればよいですか。
- サーバー側のメソッドを (static=false) でデコレートする。
- サーバー側のメソッドのシグネチャにstaticを追加する。
- サーバー側のメソッドを(static=true)でデコレートする。
- 関数のシグネチャをprivate staticに変更する。
正解
- サーバー側のメソッドを (static=false) でデコレートする。
- サーバー側のメソッドのシグネチャにstaticを追加する。
- サーバー側のメソッドを(static=true)でデコレートする。
- 関数のシグネチャをprivate staticに変更する。
解説
問題文の解析:
「@remoteActionデコレータを使用してグローバルなサーバー側メソッドを呼び出そうとするとエラーが発生します。」という文から、@remoteActionデコレータを使用した際のメソッドの特定の要件が満たされていないことがエラーの原因と考えられます。
@remoteActionデコレータを使用するメソッドは、静的(static)であり、かつpublicまたはglobalである必要があります。この要件を満たすためには、メソッドのシグネチャにstaticを追加する必要があります。したがって、正解は「サーバー側のメソッドのシグネチャにstaticを追加する。」となります。
それぞれの選択肢の理由について説明します。
□ サーバー側のメソッドを (static=false) でデコレートする。
これは不正解です。static=false というデコレーションはApexに存在しません。また、@remoteActionで呼び出されるメソッドはstaticである必要があります。
□ サーバー側のメソッドのシグネチャにstaticを追加する。
これは正解です。@remoteActionで呼び出されるメソッドはstaticである必要があります。したがって、メソッドのシグネチャにstaticキーワードを追加することでエラーを解決できます。
□ サーバー側のメソッドを(static=true)でデコレートする。
これは不正解です。Apexにはstatic=trueというデコレーションは存在しません。正しくは、メソッドのシグネチャにstaticキーワードを追加するだけです。
□ 関数のシグネチャをprivate staticに変更する。
これは不正解です。@remoteActionで呼び出されるメソッドはpublicまたはglobalなアクセス修飾子を持つ必要があります。したがって、private staticにすると、Visualforceページからアクセスできなくなります。
コメント