こんにちは、にいるです。
今回は、Apexの「コントローラの使い分け」について、まとめておきたいと思います。
Salesforceで開発をする上で、各種コントローラの機能を理解しておくことはとても重要です。
また、デベロッパー試験にも必ず出題されます。
これから受ける方はしっかり理解しておくことをおすすめします。
・【ヘルプ】標準コントローラ
・【ヘルプ】標準リストコントローラ
・【ヘルプ】コントローラ拡張の作成
・【ヘルプ】カスタムコントローラの作成
1.標準コントローラとは
標準コントローラとは、Apexクラスを書くことなくレコードページをカスタマイズできるコントローラです。
標準コントローラを使用する場合は、1つのオブジェクトのデータしか取得できません。
ただし、リレーションを持っていればクロスオブジェクト数式で参照することはできます。
Apexクラスを書く必要がないため、テストクラスも必要ありません。
そのため、開発初学者にとっては親しみやすいコントローラだと思います。
2.標準リストコントローラとは
標準リストコントローラとは、レコードセット単位で表示や操作を実行できるVisualforceページを作成できる機能です。
標準コントローラでは、1つのレコードIDしかコントローラ側に保持できないですが、標準リストコントローラを使用すれば1つのページに複数のレコードを表示することができます。
3.コントローラ拡張とは
コントローラ拡張とは、標準コントローラまたはカスタムコントローラのアクションを置き換えることができる機能です。
pageタグのextensions属性にコントローラを指定することで、コントローラ拡張機能として使用できます。
コントローラ拡張は、Apexクラスを定義するので、テストクラスも必要です。
4.カスタムコントローラとは
カスタムコントローラとは、標準機能を全く使用しないコントローラです。
そのため標準で実装されているSaveやEditなどのメソッドを全てApexクラスに書く必要があります。
コントローラ拡張と同じく、Apexクラスを定義するので、テストクラスも必要です。
またシステムモードで実行されるため、ユーザ権限を考慮する必要もあります。
5.それぞれのコントローラの違い
下記の表にそれぞれの違いをまとめてみました。
相違点 | 標準 | 標準リスト | 拡張 | カスタム |
オブジェクト | 全て | 一部 | – | 全て |
ページネーション | ✖︎ | ○ | ✖︎ | ○ |
アクション | save quicksave edit delete cancel list |
save quicksave list cancel first last next previous |
なんでも可能 | なんでも可能 |
・標準コントローラは、Apexクラスは必要なく、Visualforceコントローラのみで単一のレコードページのカスタマイズに使用する。
・標準リストコントローラも同じく、Visualforceコントローラのみでリストビューページのカスタマイズに使用する。
・コントローラ拡張は、標準もしくはカスタムコントローラのアクションを上書くために使用する。
・カスタムコントローラは、全てのロジックを開発者が定義する。
6.まとめ
いかがでしたでしょうか。
ApexクラスやVisualforceコントローラは開発者にとっては、重要な機能です。
標準コントローラで足りるのにカスタムコントローラを使用してApexテストクラスも作成するとなると時間がもったいなく、どこかでエラー発生する可能性も増えてしまいます。
要件に対して、どのコントローラを使用すればいいかを判断できるようにしっかり把握しておきたいですね。
皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!
コメント