ページ全体での参照のみモードの設定
ページ全体で参照のみモードを有効にするには、<apex:page> コンポーネントの readOnly 属性を true に設定します。
たとえば、次の例は、参照のみモードで処理される単純なページです。
1<apex:page controller="SummaryStatsController" readOnly="true">
2 <p>Here is a statistic: {!veryLargeSummaryStat}</p>
3</apex:page>このページのコントローラも単純ではありますが、ページに表示する概要統計を計算できる方法を示しています。
1public class SummaryStatsController {
2 public Integer getVeryLargeSummaryStat() {
3 Integer closedOpportunityStats =
4 [SELECT COUNT() FROM Opportunity WHERE Opportunity.IsClosed = true];
5 return closedOpportunityStats;
6 }
7}通常、単一の Visualforce ページ要求のクエリでは 50,000 行を超える行数を取得できないことがあります。参照のみモードではこの制限が緩和され、最大 1,000,000 行を照会できます。
readOnly 属性は、より多くの行を照会できるようにするだけでなく、<apex:dataTable>、<apex:dataList>、および <apex:repeat> などのコンポーネントを使用して反復処理できるコレクション内の最大項目数も引き上げることができます。この制限は、1,000 項目から 10,000 項目に増加しました。次の例は、これを示す単純なコントローラとページです。
1public class MerchandiseController {
2
3 public List<Merchandise__c> getAllMerchandise() {
4 List<Merchandise__c> theMerchandise =
5 [SELECT Name, Price__c FROM Merchandise__c LIMIT 10000];
6 return(theMerchandise);
7 }
8}1<apex:page controller="MerchandiseController" readOnly="true">
2 <p>Here is all the merchandise we have:</p>
3 <apex:dataTable value="{!AllMerchandise}" var="product">
4 <apex:column>
5 <apex:facet name="header">Product</apex:facet>
6 <apex:outputText value="{!product.Name}" />
7 </apex:column>
8 <apex:column>
9 <apex:facet name="header">Price</apex:facet>
10 <apex:outputText value="{!product.Price__c}" />
11 </apex:column>
12 </apex:dataTable>
13</apex:page>ページ全体に参照のみモードを使用する Visualforce ページではデータ操作言語 (DML) 操作を使用できませんが、ページのフォームやその他のユーザインターフェース要素に影響する getter、setter、および action メソッドのコール、その他の参照のみクエリの実行などを実行できます。