【Salesforce 認定Platformデベロッパー】試験対策:第176問

問題

ある開発者が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()メソッドが呼び出されます。

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

目次