問題
Universal Containers社には、特定のアカウントによってレンタルされているすべてのContainer__cのテーブルを表示するVisualforceページがあります。一部の顧客が100,000を超えるコンテナをレンタルしているため、ビューステートの最大制限エラーとなります。ページの読み込みエラーを解決するために、開発者はVisualforceページについて何を変更する必要がありますか。
- SOQLのOFFSETでJavaScript Remotingを使用します
- StandardSetControllerを使用してページネーションを実装します
- 遅延読み込みと一時的なリスト変数を使用します
- OffsetControllerを使用してページネーションを実装します
正解
- SOQLのOFFSETでJavaScript Remotingを使用します
- StandardSetControllerを使用してページネーションを実装します
- 遅延読み込みと一時的なリスト変数を使用します
- OffsetControllerを使用してページネーションを実装します
解説
ビューステートの最大制限エラーは、Visualforceページがサーバーとの間でやり取りする状態情報(ビューステート)が大きすぎる場合に発生します。これを解決するには、ビューステートのサイズを減らす必要があります。以下の解説では、提案された各オプションについて評価します。
それぞれの選択肢の理由について説明します。
□ SOQLのOFFSETでJavaScript Remotingを使用します
これは不正解です。JavaScript Remotingはクライアント側での非同期データ取得に使用され、ビューステートのサイズを減らすのに役立ちますが、SOQLのOFFSET句には2000レコードまでの制限があり、100,000を超えるような大規模なデータセットでは使えません。
□ StandardSetControllerを使用してページネーションを実装します
これは正解です。StandardSetControllerは、大量のデータを扱うVisualforceページでページネーションを実装するためのものです。これにより、一度に表示されるレコードの数を制限し、ビューステートの制限を超えることなくページを表示することができます。
□ 遅延読み込みと一時的なリスト変数を使用します
これは不正解です。遅延読み込みはデータを必要に応じてロードする技術で、ビューステートのサイズを減らすことができます。しかし、これだけではビューステートの最大制限エラーを根本から解決するには不十分です。
□ OffsetControllerを使用してページネーションを実装します
これは不正解です。OffsetControllerというものは、Salesforceの標準のクラスやコンポーネントとして存在しません。
コメント