@RemoteAction メソッドの範囲と表示
グローバルに公開されるリモートアクションで繊細な操作を実行したり、非公開のデータを公開したりしないようにしてください。global リモートアクションは他の global メソッドのみをコールできます。public リモートアクションは global コンポーネントでは使用できません。一方、global 範囲では使用できます。範囲のエスカレーションはコンパイルエラーになります。または、実行時に解決される参照の場合は、実行時エラーになります。次の表では、これらの制限を詳細に説明します。
| @RemoteAction の範囲 | Visualforce Page | 非グローバルコンポーネント | グローバルコンポーネント | iframe | パッケージ間のアクセス |
|---|---|---|---|---|---|
| グローバルリモートメソッド | 使用可能 | 使用可能 | 使用可能 | 使用可能 | 使用可能 |
| 公開リモートメソッド | 使用可能 | 使用可能 | エラー | エラー | 各パッケージは、同じ名前空間を共有する必要があります。このメソッドには、@namespaceAccessible アノテーションが必要です。 |
コンポーネント、<apex:include> タグまたは <apex:composition> タグによって間接的に含まれるマークアップを介してリモートアクションにアクセスする場合、リモートメソッドの範囲は最上位コンテナ (範囲のエスカレーションルールに準拠する必要のある包含階層の最上位項目) に継承されます。
| 最上位コンテナ | ||||
|---|---|---|---|---|
| @RemoteAction のアクセス元 | Visualforce Page | 非グローバルコンポーネント | グローバルコンポーネント | iframe |
| グローバルコンポーネント | 使用可能 | 使用可能 | 使用可能 | 使用可能 |
| 非グローバルコンポーネント | 使用可能 | 使用可能 | 非グローバルコンポーネントが公開リモートメソッドを含まない場合にのみ使用可能。 | 非グローバルコンポーネントが公開リモートメソッドを含まない場合にのみ使用可能。 |
| <apex:include> <apex:composition> | 同じ名前空間内では使用可能。名前空間が異なる場合および含まれるページまたはその子階層に公開リモートメソッドが含まれる場合はエラー。 | なし | なし | エラー |