Visualforce页面嵌入时有效,但失败[查询行太多:50001]



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

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

但是,如果我将其嵌入另一个带有以下代码的简单visualforce页面,我将获得" system.limitexception:太多查询行:50001"错误。

<apex:page sidebar="false">
    <apex:include pageName="MedicalForecast" />
</apex:page>
Example URL: https://force.com/apex/Forecast?t=SUMMARY&y=2013

有人可以解释这种行为吗?将一个Visualforce页面嵌入另一个时,是否还会运行其他查询?

谢谢

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

特别是那部分:

  1. 调用了关联的自定义控制器或控制器扩展程序类上的构造方法,实例化控制器 对象。
  2. 如果该页面包含任何自定义组件,则将创建它们以及任何关联的自定义控制器上的构造方法方法 执行控制器扩展。

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

也许您可以用readonly="true"注释您的页面,也可以尝试使构造函数纤细(不是浪费太多查询)。放置"获取数据"按钮&amp;操作方法 - 用户必须再单击1个,但这将算作单独的操作=新鲜的50k行限制。

最新更新