こんにちは、にいるです。
今回は、Apexの「カスタムコントローラの使い方」について、書いてみたいと思います。
1.カスタムコントローラとは
カスタムコントローラはページの機能やロジックを全て実装できるコントローラです。
pageタグのcontroller属性でカスタムコントローラ名を指定することでページで使用できます。
カスタムコントローラを使用する場合は、そのプログラムをシステムモードで実行します。
システムモードでの実行は項目レベルセキュリティやユーザ権限を考慮しないので、どのユーザでも実行することが可能になります。
この点を考慮した設計が必要になるので、必要に応じてクラスにwith sharingキーワードを使用することも考えなければいけません。
また、カスタムコントローラはApexクラスを必ず書くので、テストクラスの作成も必要になります。
他の各コントローラの相違点をまとめてみました。
相違点 | 標準 | 標準リスト | 拡張 | カスタム |
Apexクラスの作成 | 不要 | 不要 | 必須 | 必須 |
テストクラス | 不要 | 不要 | 必須 | 必須 |
新しいアクションの追加 | できない | できない | できる | できる |
アクションの上書き | できない | できない | できる | できる |
デフォルトの実行モード | ユーザ | ユーザ | システム | システム |
pageタグの属性 | standardController | standardController | extensions | controller |
他のコントローラと比較して、ポイントを押さえておきたいですね。
2.カスタムコントローラの使い方
実際に、カスタムコントローラを書いていきます。
①Visualforceページを読み込んだときに最初に実行され、ページのIDを持つ取引先レコードを取得しています。
②取得した取引先をVisualforceページに渡しています。
③カスタムのsaveメソッドです。標準機能ではなく、開発者が作成したメソッドです。
④pageタグでカスタムコントローラを使用することをcontroller属性で指定しています。
⑤actionにコントローラのsaveメソッドを指定して呼び出します。
②取得した取引先をVisualforceページに渡しています。
③カスタムのsaveメソッドです。標準機能ではなく、開発者が作成したメソッドです。
④pageタグでカスタムコントローラを使用することをcontroller属性で指定しています。
⑤actionにコントローラのsaveメソッドを指定して呼び出します。
■デバッグ結果
※デバッグなので、レコードIdを手動で指定する必要があります。
ちゃんと取得したレコードIDの情報をコントローラ側からページにバインドされているのが確認できますね。
3.まとめ
いかがでしたでしょうか。
カスタムコントローラを使用することができれば、ある程度の開発はできると思います。
あとは、ユーザの要件に合わせて、条件分岐、例外処理やメール送信、エラーメッセージの表示などのメソッドを組み込んでいくことを繰り返すだけです。
書いて書いて慣れていきましょう!
皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!
コメント