getter メソッドの定義
Visualforce コントローラクラスに関する主要なタスクの 1 つに、データベースや他の計算値をページマークアップに表示する方法を開発者に提供するというタスクがあります。この種の機能を有効にするメソッドは getter メソッドと呼ばれ、一般的に getIdentifier と名づけられています。Identifier は、メソッドが返すレコードやプリミティブ値の名前です。
たとえば、次のコントローラには、コントローラの名前を文字列として返すための getter メソッドがあります。
1public class MyController {
2
3 public String getName() {
4 return 'MyController';
5 }
6
7}getter メソッドの結果をページに表示するには、get プレフィックスを使用しない getter メソッドの名前を式で使用します。たとえば、getName メソッドの結果をページマークアップに表示するには、{!name} を使用します。
1<apex:page controller="MyController">
2 <apex:pageBlock title="Hello {!$User.FirstName}!">
3 This is your new page for the {!name} controller.
4 </apex:pageBlock>
5</apex:page>標準取引先コントローラを使用した前述の例では、ページには、{!account.<fieldName>} 式を使用して (id クエリ文字列パラメータを使用した) URL に指定された、取引先レコードの値が表示されました。これは、標準取引先コントローラに、指定された取引先レコードを返す getAccount という getter メソッドが含まれるため実行できました。次のコードを使用して、カスタムコントローラでこの機能を模倣することができます。
1public class MyController {
2
3 public String getName() {
4 return 'MyController';
5 }
6
7 public Account getAccount() {
8 return [select id, name from Account
9 where id = :ApexPages.currentPage().getParameters().get('id')];
10 }
11}- まず、currentPage メソッドが現在のページの PageReference インスタンスを返します。PageReference は、クエリ文字列パラメータなど、Visualforce ページへの参照を返します。
- ページ参照に基づいて、getParameters メソッドを使用して、指定されたクエリ文字列パラメータの名前と値の対応付けを返します。
- 次に、id を指定する get メソッドのコールにより、id パラメータ自体の値を返します。
MyController コントローラを使用するページは、{!account.name} または {!account.id} 式を使用して、それぞれ name または id 項目のいずれかを表示できます。コントローラの SOQL クエリによって返される項目はこれらの項目のみであるため、ページではこれらの項目のみを使用することができます。
標準取引先コントローラをさらに緻密に模倣するには、<apex:page> タグに tabStyle 属性を追加して他の取引先ページと同じスタイルをページに適用できます。ページのマークアップは、次のようになります。
1<apex:page controller="MyController" tabStyle="Account">
2 <apex:pageBlock title="Hello {!$User.FirstName}!">
3 This is your new page for the {!name} controller. <br/>
4 You are viewing the {!account.name} account.
5 </apex:pageBlock>
6</apex:page>