名前空間および JavaScript Remoting
$RemoteAction グローバルを使用して、リモートアクションの正しい名前空間 (存在する場合) を自動的に解決できます。これにより、パッケージで提供されるメソッドに対してリモートコールを実行するページの場合は特に名前空間の作業が容易になります。
この機能を使用するには、JavaScript Remoting を明示的に呼び出す必要があります。これを実行するパターンは次のとおりです。
1Visualforce.remoting.Manager.invokeAction(
2 'fully_qualified_remote_action',
3 invocation_parameters
4);完全修飾リモートアクションは、namespace[.BaseClass][.ContainingClass].ConcreteClass.Method のように、名前空間、ベースクラスなどを��むリモートアクションメソッドへの完全なパスを表す文字列です。名前空間を自動的に解決するには、たとえば、{!$RemoteAction.MyController.getAccount} のように、式に $RemoteAction を使用します。
呼び出しパラメータは、リモートメソッドの呼び出しの実行に使用される引数であり、標準リモートコールを行うために使用される引数と同じです。
- @RemoteAction メソッドに送信するためのパラメータ (ある場合)。
- 返される結果を処理するコールバック関数。
- 呼び出しに関する設定詳細 (ある場合)。
たとえば、次のような取引先を取得するリモート呼び出しを定義するとします。
この JavaScript Remoting コールでは、コントローラが定義されている名前空間、自分の名前空間内にあるか、インストールされたパッケージが提供する名前空間内にあるなどの詳細を把握している必要がありません。また、組織に定義済みの名前空間がない状況にも対応します。
1<script type="text/javascript">
2function getRemoteAccount() {
3 var accountName = document.getElementById('acctSearch').value;
4
5 Visualforce.remoting.Manager.invokeAction(
6 '{!$RemoteAction.MyController.getAccount}',
7 accountName,
8 function(result, event){
9 if (event.status) {
10 document.getElementById('acctId').innerHTML = result.Id
11 document.getElementById('acctName').innerHTML = result.Name;
12 } else if (event.type === 'exception') {
13 document.getElementById("responseErrors").innerHTML = event.message;
14 } else {
15 document.getElementById("responseErrors").innerHTML = event.message;
16 }
17 },
18 {escape: true}
19 );
20}
21</script>