• 068_Apex&Page中的ReadOnly 使用方式


    一、page页面遇到需要检索大量数据的处理方式需要时会用Readonly

    通常,对单个Visualforce页面请求的查询可能无法检索超过50,000行。 在Read only模式下,此限制将放宽允许查询最多1,000,000行。

    <apex:page controller="SummaryStatsController" readOnly="true">
    <p>Here is a statistic: {!veryLargeSummaryStat}</p>
    </apex:page>
    

      

    public class SummaryStatsController {
    public Integer getVeryLargeSummaryStat() {
    Integer closedOpportunityStats =
    [SELECT COUNT() FROM Opportunity WHERE Opportunity.IsClosed = true];
    return closedOpportunityStats;
    }
    }
    

      同样也会让组件的限制增加,如<apex:dataTable>, <apex:dataList>, and <apex:repeat>. 会从1000增加到10000;

    <apex:page controller="MerchandiseController" readOnly="true">
    <p>Here is all the merchandise we have:</p>
    <apex:dataTable value="{!AllMerchandise}" var="product">
    <apex:column>
    <apex:facet name="header">Product</apex:facet>
    <apex:outputText value="{!product.Name}" />
    </apex:column>
    <apex:column>
    <apex:facet name="header">Price</apex:facet>
    <apex:outputText value="{!product.Price__c}" />
    </apex:column>
    </apex:dataTable>
    </apex:page>
    

      

    public class MerchandiseController {
    public List<Merchandise__c> getAllMerchandise() {
    List<Merchandise__c> theMerchandise =
    [SELECT Name, Price__c FROM Merchandise__c LIMIT 10000];
    return(theMerchandise);

    }
    }

     二、Apex 中的Readonly

    Visualforce控制器方法可以使用Apex ReadOnly注释,但有一些重要的限制,即使页面本身不是在只读模式下。
    带有@ReadOnly注释的Visualforce控制器方法会自动利用只读模式。
    对于Visualforce控制器方法,只读方法也必须具有@RemoteAction注释。  关于@RemoteAction可以参考上篇文章:https://i.cnblogs.com/EditPosts.aspx?postid=9682154 
    @RemoteAction注释要求方法为:

    <div id="totalAccounts"></div> 
                    <script>
                    Visualforce.remoting.Manager.invokeAction(
                        '{!$RemoteAction.YOUR_CONTROLLER_NAME.getRemoteTotalAccounts}',
                            function(result){
                                document.getElementById('totalAccounts').innerHTML = result;
                            }
    
                        );
                    </script>
    

      

    @RemoteAction
    @readOnly
    public static Integer getRemoteTotalAccounts() {
         return [Select count() FROM Account];
    }
    

      这个例子并未真实测试过。总之,readonly是可以扩大之前limit的限制

    此刻,静下心来学习
  • 相关阅读:
    Mac从零配置Vim
    Mac效率:配置Alfred web search
    看看你的邻居在干什么
    成功破解邻居的Wifi密码
    MacBook安装Win10
    C陷阱:求数组长度
    Nexus 6P 解锁+TWRP+CM
    搭建树莓派手机远程开门系统
    Ubuntu下配置ShadowS + Chrome
    JS传参出现乱码(转载)
  • 原文地址:https://www.cnblogs.com/bandariFang/p/9698037.html
Copyright © 2020-2023  润新知