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

Apex コントローラでの内部クラスの使用

前のレッスンでは、Visualforce カタログページ用のカスタムコントローラを作成しました。ただし、コントローラはカスタムオブジェクトをデータベースから直接ビューに渡します。これは最適な方法とはいえません。このレッスンでは、MVC デザインパターンをより正確に使用するようにコントローラをリファクタリングし、さらにページにいくつか機能を追加します。

  1. [StoreFrontController] をクリックして、ページのコントローラコードを編集します。
  2. クラスの定義を次のように修正し、[Quick Save (適用)] をクリックします。
  3. [Catalog (カタログ)] をクリックしてページの Visualforce コードを編集します。
  4. 列定義を、新しい内部クラスのプロパティ名を処理するように変更します。既存の列定義を次のコードで置き換えます。
    outputField コンポーネントは自動的に sObject 項目を処理しますが、カスタムクラスはまったく処理しません。outputText はどの値も処理します。
  5. [保存] をクリックして変更を保存し、ページを再読み込みします。
    価格列が currency として書式設定されなくなりました。
  6. 価格の outputText タグを次のコードに変更します。
    outputText コンポーネントを使用して、異なるデータ型を自動的に書式設定できます。
  7. コードが、次のようになっていることを確認して、[保存] をクリックします。
    カタログページは次のようになります。カスタムコントローラを使用した商品カタログページ (カート追加前)

もうひとこと...

  • DisplayMerchandise クラスは、すでにデータベースに存在する Merchandise__c 型をラップし、新しいプロパティとメソッドを追加します。コンストラクタを使用すると、既存の Merchandise__c レコードを渡すことで新しい DisplayMerchandise インスタンスを作成できます。これで、インスタンス変数 productsDisplayMerchandise インスタンスのリストとして定義されます。
  • getProducts() メソッドは、Merchandise__c レコードを返すクエリ (SOQL クエリをコールする角括弧内のテキスト) を実行します。その後、クエリから返されたレコードを反復処理し、DisplayMerchandise 商品のリストに追加して、そのリストを返します。