1

我遇到了一个奇怪的问题,我有一个(非常复杂的)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 页面嵌入到另一个页面时是否会运行其他查询?

谢谢

4

1 回答 1

2

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

特别是那部分:

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

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

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

于 2014-02-04T09:56:56.567 回答