S.B.S. Salesforce技術ブログ

教えて921さん!

Visualforceを作成しよう!Ⅱ

こんにちは、Nambuです。今回も引き続きVisualforceについて説明したいと思います。前の記事ではVisualforeの簡単な説明と新規作成そしてStandardControllerについて話したので今回は他のコントローラについて話したいと思います。

sbs-sfdc.hatenablog.com

標準リストコントローラ

前の記事で説明した標準コントローラは1つのレコードを表示できるコントローラでした。対して標準リストコントローラは名前の通り複数のレコードをリスト表示することが可能です。このコントローラを使うときは<apex:page>の部分にstandardControllerだけでなくrecordSetVar="変数名"を書く必要があります。この変数にリストが格納され、実際に値を出力するときは<apex:pageBlockTable>などで変数をループさせて表示します。
また、標準リストコントローラにはページング機能用のメソッドが用意されています。1ページあたりのデフォルトレコード数は20件となっていて、用意されているメソッドのnextで次のページ、previousで前のページ、firstで最初のページ、lastで最後のページへ遷移することができます。1ページあたりのレコード数を変更したい場合やこれらの遷移以外の方法作成したい場合は後述するコントローラ拡張を使用します。

カスタムコントローラ

カスタムコントローラを使用するときは今までの2つとは異なりApexを用いてコントローラ用のクラスを作成しなければなりません。ApexはSalesforceが提供しているオブジェクト指向プログラミング言語で非常にJavaと似ています。今回はVisualforceの書き方を説明するのでApexクラスの詳細説明はまた次の記事にしたいと思います。
Visualforceでカスタムコントローラを使うときは<apex:page>の部分にController=”Apexクラス名”と書きます。また、Visualforce側でアクションや変数を使用するにはApexクラスで予めメソッドや変数を定義しておかないといけません。今回のApexクラスは1つのリストと値をセットするコンストラクタだけの単純なものになっています。

コントローラ拡張

最後に紹介するのはコントローラ拡張です。これは標準コントローラとカスタムコントローラの中間のような機能で、コントローラ拡張もApexクラスを作る必要はありますが標準コントローラも一緒に使用します。なので、コントローラ拡張はカスタムコントローラほどしっかり機能を作成する必要がなく、変数やメソッドを少し追加したいときなどに使います。コントローラ拡張するときは<apex:page>の部分にstandardControllerだけでなくextensions=”Apexクラス名”と書きます。また、コントローラ拡張は1つのVisualforceに複数定義することが可能で、その場合はextensionsの中にクラス名をカンマ区切りで羅列します。


今回はこのくらいで、また会いましょう!