Apex サーバ側コントローラからデータを返す
return ステートメントを使用して、サーバ側コントローラからクライアント側コントローラに結果を返します。結果データは、JSON 形式に逐次化できる必要があります。
返されるデータ型には次のいずれかを使用できます。
- 単純 — String、Integer など。詳細は、「基本の型」 を参照してください。
- sObject — 標準およびカスタムの sObjects がサポートされます。「標準オブジェクト型とカスタムオブジェクト型」を参照してください。
- Apex — Apex クラスのインスタンス (多くの場合、カスタムクラス)。「カスタム Apex クラス型」を参照してください。
- コレクション — 他のいずれかの型のコレクション。「コレクション型」を参照してください。
Apex オブジェクトを返す
次に、カスタム Apex オブジェクトのコレクションを返すコントローラの例を示します。
1public with sharing class SimpleAccountController {
2
3 @AuraEnabled
4 public static List<SimpleAccount> getAccounts() {
5
6 // Perform isAccessible() check here
7
8 // SimpleAccount is a simple "wrapper" Apex class for transport
9 List<SimpleAccount> simpleAccounts = new List<SimpleAccount>();
10
11 List<Account> accounts = [SELECT Id, Name, Phone FROM Account LIMIT 5];
12 for (Account acct : accounts) {
13 simpleAccounts.add(new SimpleAccount(acct.Id, acct.Name, acct.Phone));
14 }
15
16 return simpleAccounts;
17 }
18}サーバ側アクションから Apex クラスのインスタンスが返されると、インスタンスはフレームワークによって JSON に逐次化されます。@AuraEnabled でアノテーションされた public インスタンスのプロパティとメソッドの値のみが逐次化されて返されます。
たとえば、取引先レコードのいくつかの詳細を含む簡単な「ラッパー」Apex クラスを次に示します。このクラスを使用して、取引先レコードのいくつかの詳細を逐次化可能な形式にパッケージ化します。
リモート Apex コントローラアクションから返されたときに、Id および Name プロパティがクライアント側で定義されます。ただし、@AuraEnabled アノテーションがないため、Phone プロパティはサーバ側で逐次化されず、結果データの一部として返されません。
1public class SimpleAccount {
2
3 @AuraEnabled public String Id { get; set; }
4 @AuraEnabled public String Name { get; set; }
5 public String Phone { get; set; }
6
7 // Trivial constructor, for server-side Apex -> client-side JavaScript
8 public SimpleAccount(String id, String name, String phone) {
9 this.Id = id;
10 this.Name = name;
11 this.Phone = phone;
12 }
13
14 // Default, no-arg constructor, for client-side -> server-side
15 public SimpleAccount() {}
16
17}