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

JavaScript Remoting

JavaScript から Apex コントローラーのメソッドをコールするには、Visualforce の JavaScript Remoting を使用します。これにより、AJAX 機能を実装した標準 Visualforce コンポーネントでは実現できない、複雑で動的な動作を行うページを作成できます。
JavaScript Remoting を使用して実装された機能には、次の 3 つの要素が必要です。
  • JavaScript で記述される、Visualforce ページに追加するリモートメソッドの呼び出し。
  • Apex コントローラークラスのリモートメソッド定義。このメソッドは Apex で記述されますが、通常の action メソッドとはいくつかの重要な違いがあります。
  • JavaScript で記述される、Visualforce ページに追加または含めるレスポンスハンドラーコールバック関数。
コントローラーでは、Apex のメソッド宣言は、次のように @RemoteAction アノテーションが先頭に付加されます。
1@RemoteAction
2global static String getItemId(String objectName) { ... }
Apex @RemoteAction メソッドは static で、かつ global または public のいずれかである必要があります。
Apex クラスをカスタムコントローラーまたはコントローラー拡張としてページに追加します。
1<apex:page controller="MyController" extension="MyExtension">

コントローラーまたはコントローラー拡張を追加すると、その Apex クラス内のすべての @RemoteAction メソッドにアクセス権が付与されます。この動作は、ページ内でそれらのメソッドが使用されていなくても行われます。ページを表示できるユーザーであれば誰でも、すべての @RemoteAction メソッドを実行して、コントローラーに擬似データや悪意のあるデータを提供できます。

警告

次に、要求を JavaScript 関数コールとして追加します。簡単な JavaScript Remoting 呼び出しの形式は次のようになります。
1[namespace.]MyController.method(
2    [parameters...,]
3    callbackFunction,
4    [configuration]
5);
表 1. リモート要求の要素
要素 説明
namespace コントローラークラスの名前空間。名前空間要素が必要であるのは、組織に名前空間が定義されている場合、またはクラスがインストール済みパッケージに基づく場合です。
MyControllerMyExtension Apex コントローラーまたは拡張の名前。
method コールする Apex メソッドの名前。
parameters メソッドが取るパラメーターのカンマ区切りのリスト。
callbackFunction コントローラーからの応答を処理する JavaScript 関数の名前。また、callbackFunction では、メソッドコールの状況と結果をパラメーターとして返します。
configuration リモートコールと応答の処理を設定します。Apex メソッドの応答をエスケープするかどうかを指定するなど、リモートコールの動作を変更する場合にこの要素を使用します。

詳細は、『Visualforce 開発者ガイド』の「Apex コントローラーの JavaScript Remoting」を参照してください。