同じ名前空間の Visualforce ページ間でのコードの共有
異なるパッケージの Visualforce ページ間で機能を共有するには、カスタムコントローラクラスで @namespaceAccessible Apex アノテーションを使用します。このアノテーションによって、Visualforce ページから別のパッケージのコントローラにアクセスできます。第一世代パッケージで特定の名前空間を使用して開発できる管理パッケージは 1 つのみです。第二世代パッケージでは、同じ名前空間を使用して複数の (ロックされていない) 管理パッケージを開発できます。デフォルトでは、パッケージにインストールされた Lightning コンポーネントおよび Visualforce ページから、別のパッケージの Apex クラスの公開 Apex メソッドをコールすることはできません。これは 2 つのパッケージが同じ名前空間にある場合にも該当します。
次の例は、Apex コードに @namespaceAccessible アノテーションを含める方法を示しています。
1@namespaceAccessible
2public virtual class NsController {
3 private String message;
4 @namespaceAccessible
5 public NsController() {
6 this.message = 'default'; // init to non-blank value
7 }
8 @namespaceAccessible
9 public virtual String getMessage() {
10 return this.message;
11 }
12 @namespaceAccessible
13 public virtual void setMessage(String msg) {
14 this.message = msg;
15 }
16}まず、コントローラの上にアノテーションを追加します。これにより、異なるパッケージの名前空間全体から参照可能になります。コントローラに注釈を付けることで、アノテーションに追加するメソッドも参照可能にする必要があります。次に、ネームスペース全体で表示するメソッドのそれぞれについて、それらの前に @namespaceAccessible アノテーションを追加します。アノテーションは、パッケージの外側にあり、さらに同じ名前空間内にあるメソッドのみを参照可能にする場合に使用します。