JavaScript Remoting
JavaScript から Apex コントローラーのメソッドをコールするには、Visualforce の JavaScript Remoting を使用します。これにより、AJAX 機能を実装した標準 Visualforce コンポーネントでは実現できない、複雑で動的な動作を行うページを作成できます。
JavaScript Remoting を使用して実装された機能には、次の 3 つの要素が必要です。
- JavaScript で記述される、Visualforce ページに追加するリモートメソッドの呼び出し。
- Apex コントローラークラスのリモートメソッド定義。このメソッドは Apex で記述されますが、通常の action メソッドとはいくつかの重要な違いがあります。
- JavaScript で記述される、Visualforce ページに追加または含めるレスポンスハンドラーコールバック関数。
コントローラーでは、Apex のメソッド宣言は、次のように @RemoteAction アノテーションが先頭に付加されます。
Apex @RemoteAction メソッドは static で、かつ global または public のいずれかである必要があります。
1@RemoteAction
2global static String getItemId(String objectName) { ... }Apex クラスをカスタムコントローラーまたはコントローラー拡張としてページに追加します。
次に、要求を JavaScript 関数コールとして追加します。簡単な JavaScript Remoting 呼び出しの形式は次のようになります。
1<apex:page controller="MyController" extension="MyExtension">1[namespace.]MyController.method(
2 [parameters...,]
3 callbackFunction,
4 [configuration]
5);| 要素 | 説明 |
|---|---|
| namespace | コントローラークラスの名前空間。名前空間要素が必要であるのは、組織に名前空間が定義されている場合、またはクラスがインストール済みパッケージに基づく場合です。 |
| MyController、MyExtension | Apex コントローラーまたは拡張の名前。 |
| method | コールする Apex メソッドの名前。 |
| parameters | メソッドが取るパラメーターのカンマ区切りのリスト。 |
| callbackFunction | コントローラーからの応答を処理する JavaScript 関数の名前。また、callbackFunction では、メソッドコールの状況と結果をパラメーターとして返します。 |
| configuration | リモートコールと応答の処理を設定します。Apex メソッドの応答をエスケープするかどうかを指定するなど、リモートコールの動作を変更する場合にこの要素を使用します。 |
詳細は、『Visualforce 開発者ガイド』の「Apex コントローラーの JavaScript Remoting」を参照してください。