Visualforce页面工作但嵌入时失败[查询行太多:50001]

时间:2014-02-04 08:33:31

标签: salesforce visualforce apex

我遇到了一个奇怪的问题wherby我有一个(非常复杂的)VisualForce页面,我在运行时传递了几个参数。这个页面运行正常。

Example URL: https://force.com/apex/medicalforecast?t=SUMMARY&y=2013

但是,如果我使用以下代码将其嵌入到另一个简单的visualforce页面中,我会收到“System.LimitException:Too many query rows:50001”错误。

<apex:page sidebar="false">
    <apex:include pageName="MedicalForecast" />
</apex:page>

Example URL: https://force.com/apex/Forecast?t=SUMMARY&y=2013

任何人都可以解释这种行为吗?将一个VisualForce页面嵌入另一个VisualForce页面时是否会运行其他查询?

谢谢

1 个答案:

答案 0 :(得分:2)

阅读http://www.salesforce.com/us/developer/docs/pages/Content/pages_controller_get_request.htm

特别是那部分:

  
      
  1. 调用关联的自定义控制器或控制器扩展类上的构造函数方法,实例化控制器   对象。
  2.   
  3. 如果页面包含任何自定义组件,则会在任何关联的自定义控制器上创建它们和构造函数方法   控制器扩展已执行。
  4.   

因此,在第一个初始请求中,主页面的构造函数(和getter)以及所有嵌入的页面/组件将触发以呈现初始状态。这意味着它是所有一个事务,一个上下文和50K行限制在它们之间共享。

也许您可以使用readonly="true"注释您的网页,或者尝试让构造函数变得苗条(不要浪费太多查询)。放一个“获取数据”按钮&amp;动作方法 - 用户必须再单击一次,但这将被视为单独的动作=新的50K行限制。