問題
ある開発者が2つのカスタムコントローラ拡張を持っており、それぞれにsave()メソッドがあります。次のVisualforceページでは、どのsave()メソッドが呼び出されますか。
<apex:page standardController="Account" extensions="ExtensionA, ExtensionB">
<apex:commandButton action="{!save}" value="Save" />
</apex:page>
- ExtensionB save()
- Standard controller save()
- ExtensionA save()
- ランタイムエラーが発生する
正解
- ExtensionB save()
- Standard controller save()
- ExtensionA save()
- ランタイムエラーが発生する
解説
それぞれの選択肢の理由について説明します。
□ ExtensionB save()
これは不正解です。ExtensionBのsave()メソッドは、ExtensionAにsave()メソッドが存在しない場合にのみ呼び出されます。しかし、この問題の文脈では、両方の拡張にsave()メソッドが存在すると明記されているため、ExtensionBのsave()メソッドは呼び出されません。
□ Standard controller save()
これは不正解です。標準コントローラのsave()メソッドは、拡張にsave()メソッドが存在しない場合にのみ呼び出されます。この問題では、両方の拡張にsave()メソッドが存在するため、標準コントローラのメソッドは呼び出されません。
□ ExtensionA save()
これは正解です。Visualforceページで複数のコントローラ拡張を指定する場合、最初にリストされた拡張のメソッドが優先されます。したがって、この場合はExtensionAのsave()メソッドが呼び出されます。
参考:コントローラ拡張の作成
□ ランタイムエラーが発生する
これは不正解です。この設定ではランタイムエラーは発生しません。正しくExtensionAのsave()メソッドが呼び出されます。
次の問題へ
【Salesforce 認定Platformデベロッパー】試験対策:第177問
問題 以下のコードから、コントローラ変数を作成するために使用できるステートメントはどれですか。3つ選びなさい。 public class AccountListController { public List…
前の問題へ
【Salesforce 認定Platformデベロッパー】試験対策:第175問
問題 開発者が組織内でテストを実行するための方法は何ですか。2つ選びなさい。 Tooling API 開発者コンソール メタデータ API Bulk API 正解 Tooling API 開発者コンソ…
1問目から復習する
【Salesforce 認定Platformデベロッパー】試験対策:第1問
問題 デバッグログに書き込まれるときのxの値は何ですか。 Integer x = 0; do { x = 1; x++; } while (x < 1); System.debug(x); 0 1 2 3 正解 0 1 2 3 解説 デバッ…
コメント