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

カスタムコントローラーおよびコントローラー拡張の作成に関する考慮事項

以下に示すのは、コントローラー拡張およびカスタムコントローラーの作成時における考慮事項です。
  • webService として定義されたメソッドがクラスにない限り、カスタム拡張とコントローラークラスおよびコントローラーメソッドは、通常 public として定義されます。クラスに Web サービスメソッドが含まれる場合、global として定義されている必要があります。
  • データベースからデータを返すときは sets、maps、または lists を使用します。こうすることで、コードとデータベース間の通信回数を削減できるため、コードの効率が高まります。
  • Visualforce コントローラー拡張とカスタムコントローラーの Apex ガバナ制限は、匿名ブロックまたは WSDL メソッドの制限と同じです。ガバナ制限についての詳細は、付録の「実行ガバナと制限」を参照してください。
  • カスタムコントローラーまたはコントローラー拡張を作成する場合、通常はユーザーに表示されない機密データが不注意で公開されないように注意してください。権限を適用するには、クラス定義に with sharing キーワードを使用することをお勧めします。また、Web サービスの使用に注意してください。プロファイルによって最上位のエントリポイントとして確保されていますが、一旦初期化されるとシステムのコンテキストで実行されます。
  • Apex メソッドと変数のインスタンス化の順序は、必ずしも指定されたとおりではありません。詳細は、「カスタム拡張またはコントローラーを使用したデータの取得と設定」を参照してください。
  • コントローラーの「getxxx」メソッドでは、データ操作言語 (DML) の操作を使用できません。たとえば、コントローラーに getName メソッドが含まれている場合、オブジェクトを作成するメソッドで insert または update を使用することはできません。
  • コントローラーのコン��トラクターメソッドでデータ操作言語 (DML) の操作を使用することはできません。
  • コントローラー、またはコントローラーのコンストラクターでは、「getxxx」または「setxxx」メソッドに @future アノテーションを使用することはできません。
  • string 型または integer 型などの Apex のプリミティブデータ型は、値によってコンポーネントのコントローラーに渡されます。
  • list や sObject などの Apex の非プリミティブデータ型は、参照によってコンポーネントのコントローラーに渡されます。つまり、コンポーネントのコントローラーによって取引先の名前が変更されると、その変更内容はページのコントローラーで使用できるようになります。
  • 個人取引先を使用する組織の場合は、次の事項が適用されます。
    • カスタムコントローラーを使用する取引先レコードの name 項目を <apex:inputField> コンポーネントを使用して参照する場合、クエリに isPersonAccount を指定する必要があります。
    • 新しい取引先を作成して name を設定すると、レコードは法人取引先になります。新しい取引先を作成して lastname を設定すると、個人取引先になります。
    • ベストプラクティスとして、個人取引先と法人取引先の��方で正しく表示されるカスタム名数式項目を作成し、Visualforce ページで、標準項目の代わりにその項目を使用します。
    • Salesforce AppExchange パッケージに Visualforce ページを含める場合は、コントローラーまたはコントローラー拡張で、個人取引先にのみ存在する項目を明示的に参照することはできません。