Pagination using aStandardSetControllerhelps manage large datasets by loading only a subset of records at a time. This approach minimizes view state size, which is critical for handling large datasets like 10,000+ records. Reference:StandardSetController for Pagination
最新のコメント (最新のコメントはトップにあります。)
generativeAI - 2025-11-21
正解は **B** です。
### 正解の解説
**B. StandardSetController を使用してページネーションを実装します。**
Visualforce ページで大量のデータ(リスト)を扱う際、「ビューステートの制限 (View State Limit)」を回避するための標準的かつ最も推奨される方法は、**`StandardSetController`** を使用してページネーション(ページ送り)を実装することです。
最新のコメント (最新のコメントはトップにあります。)
正解は **B** です。
### 正解の解説
**B. StandardSetController を使用してページネーションを実装します。**
Visualforce ページで大量のデータ(リスト)を扱う際、「ビューステートの制限 (View State Limit)」を回避するための標準的かつ最も推奨される方法は、**`StandardSetController`** を使用してページネーション(ページ送り)を実装することです。
* **StandardSetController の利点:**
* **大量データの処理:** クエリロケータを受け取ることができ、最大 10,000 レコードまでのセットを効率的に管理します。(※さらに大量の場合は `readOnly="true"` と組み合わせたりしますが、ページネーションの基本はこれです)
* **ビューステートの削減:** 一度にすべてのレコード(10,000件以上)を画面に表示・保持するのではなく、**「現在のページに表示する分(例:20件)」だけ** をメモリ(ビューステート)に保持します。
* **組み込みメソッド:** `next()`, `previous()`, `first()`, `last()` といったページ送りのためのメソッドが標準で用意されており、開発が容易です。
---
### 不正解の解説
**A. OffsetController を使用してページネーションを実装します。**
これは **不正解** です。
Salesforce に `OffsetController` という標準クラスは存在しません。これは架空の名称です。
**C. SOQL オフセットで JavaScript リモート処理を使用します。**
これは **不正解** です。
JavaScript リモート処理(Javascript Remoting)はビューステートを使用しないため軽量ですが、**SOQL の `OFFSET` 句には「最大 2,000 行まで」という制限**があります。
問題文には「10,000 個を超える」とあるため、OFFSET を使ったクエリでは 2,001 行目以降のデータにアクセスする際にエラーや不整合が生じやすく、適切な解決策ではありません。
**D. 遅延読み込みと一時的なリスト変数を使用します。**
これは **不正解** です。
`transient`(一時的)キーワードを使用すると、変数がビューステートに保存されなくなるため、ビューステート制限の回避には役立ちます。
しかし、`transient` にしたリストはサーバーへのポストバック(ボタンクリックなど)のたびにデータが消えるため、毎回クエリを再実行する必要があります。また、これだけでは「ページネーション(小分けにして表示する機能)」自体は実装されず、1万...