この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

StandardController クラス

標準コントローラーの拡張を定義する場合は、StandardController を使用します。

名前空間

ApexPages

使用方法

StandardController オブジェクトは、Salesforce が提供する、開発済みの Visualforce コントローラーを参照します。StandardController オブジェクトを参照する必要があるのは、標準コントローラーの拡張を定義する場合のみです。StandardController は、拡張クラスコンストラクターの単一引数のデータ型です。

インスタンス化

次の方法で、StandardController をインスタンス化することができます。
1ApexPages.StandardController sc = new ApexPages.StandardController(sObject);

次の例では、StandardController オブジェクトの標準コントローラー拡張のコンストラクターでの使用方法を示します。

1public class myControllerExtension {
2
3    private final Account acct;
4    
5    // The extension constructor initializes the private member
6    // variable acct by using the getRecord method from the standard
7    // controller.
8    public myControllerExtension(ApexPages.StandardController stdController) {
9        this.acct = (Account)stdController.getRecord();
10    }
11
12    public String getGreeting() {
13        return 'Hello ' + acct.name + ' (' + acct.id + ')';
14    }
15}

次の Visualforce マークアップは、上記のコントローラー拡張をページ内で使用する方法を示します。

1<apex:page standardController="Account" extensions="myControllerExtension">
2    {!greeting} <p/>
3    <apex:form>
4        <apex:inputField value="{!account.name}"/> <p/>
5        <apex:commandButton value="Save" action="{!save}"/>
6    </apex:form>
7</apex:page>

StandardController コンストラクター

StandardController のコンストラクターは次のとおりです。

StandardController(controllerSObject)

指定した標準オブジェクトまたはカスタムオブジェクトを使用して、ApexPages.StandardController クラスの新しいインスタンスを作成します。

署名

public StandardController(SObject controllerSObject)

パラメーター

controllerSObject
型: SObject
標準オブジェクトまたはカスタムオブジェクト。

StandardController メソッド

StandardController のメソッドは次のとおりです。すべてインスタンスメソッドです。

addFields(fieldNames)

Visualforce ページが読み込まれると、Visualforce マークアップで参照される項目に基づいて、ページにアクセスできる項目が表示されます。このメソッドは、コントローラーがそれらの項目にも明示的にアクセスできるように、fieldNames に指定された各項目に参照を追加します。

署名

public Void addFields(List<String> fieldNames)

パラメーター

fieldNames
型: List<String>

戻り値

型: Void

使用方法

このメソッドは、レコードが読み込まれる前にコールする必要があります。通常、コントローラーのコンストラクターによってコールされます。このメソッドがコンストラクター外でコールされる場合、addFields() をコールする前に reset() メソッドを使用する必要があります。

fieldNames の文字列には、AccountId などの項目の API 項目名か、something__r.myField__c などの項目への明示的なリレーションを使用できます。

このメソッドは、動的な Visualforce バインドで使用されるコントローラーのみに使用できます。

cancel()

キャンセルページの PageReference を返します。

署名

public System.PageReference cancel()

戻り値

型: System.PageReference

delete()

レコードを削除し、削除ページの PageReference を返します。

署名

public System.PageReference delete()

戻り値

型: System.PageReference

edit()

標準編集ページの PageReference を返します。

署名

public System.PageReference edit()

戻り値

型: System.PageReference

getId()

Visualforce ページ URL の id クエリ文字列パラメーターの値に基づいて、現在コンテキストにあるレコードの ID を返します。

署名

public String getId()

戻り値

型: String

getRecord()

Visualforce ページ URL の id クエリ文字列パラメーターの値に基づいて、現在コンテキストにあるレコードを返します。

署名

public SObject getRecord()

戻り値

型: sObject

使用方法

関連付けられた Visualforce マークアップで参照される項目のみを、この SObject で照会することができます。関連するオブジェクトの項目など、その他のすべての項目については、SOQL 表現を使用して照会する必要があります。

照会する任意の追加項目を参照する非表示コンポーネントを使用すれば、この制約を回避できます。コンポーネントの rendered 属性を false に設定して、コンポーネントを非表示にします。

ヒント

1<apex:outputText 
2value="{!account.billingcity} 
3{!account.contacts}"
4rendered="false"/>

reset()

新たに参照された項目へのアクセス権限を再取得するようにコントローラーを強制します。このメソッドがコールされる前にレコードに加えられた変更は、すべて破棄されます。

署名

public Void reset()

戻り値

型: Void

使用方法

これは、addFields がコンストラクター外でコールされる場合にのみ使用するメソッドで、addFields がコールされる直前にコールする必要があります。

このメソッドは、動的な Visualforce バインドで使用されるコントローラーのみに使用できます。

save()

変更を保存し、更新された PageReference を返します。

署名

public System.PageReference save()

戻り値

型: System.PageReference

view()

標準詳細ページの PageReference オブジェクトを返します。

署名

public System.PageReference view()

戻り値

型: System.PageReference