【问题标题】:Displaying multi-subquery, dynamic field, dynamic object SOQL query results on a VF page在 VF 页面上显示多子查询、动态字段、动态对象 SOQL 查询结果
【发布时间】:2012-07-17 14:42:28
【问题描述】:

我想将 SOQL 查询传递给页面,或者让用户自己在页面上输入,处理它,然后在表格中显示结果。

最大的问题是显示结果,因为 VF 动态绑定似乎只工作了一层,之后它给出了空指针异常(似乎是 SF 中的一些错误)。

我有一个动态主对象,其中包含来自查询的多个相关列表,例如:用户可能正在提取一个客户列表,其中包含所有相关的联系人和所有相关的机会。这是一个示例查询:

从帐户中选择 id、姓名、BillingState(从联系人中选择 id、姓名、职务)、(从机会中选择 id、金额),其中名称如 '%Corp%'

另外一次,查询可能在完全不同的父对象上,例如:

从 Opportunitylimit 20 中选择 id、name、accountId,(从 OpportunityLineItems 中选择 id、Cost)、(从 Attachments 中选择 id、名称)

从查询中解析字段和对象名称不是问题,但是使用动态绑定在 VF 页面上的表中显示这些结果是一场噩梦,对我不起作用。有任何想法吗?或者您可能在某处看到过这种特定情况的 VF 代码?

附带说明,以下是我在尝试使用动态绑定时在 VF 页面上不断遇到的错误

错误:java.lang.NullPointerException
错误:空

【问题讨论】:

  • 动态绑定的哪一部分不起作用?如果您在绑定的地方发布部分视觉力量,可能会有所帮助。您的绑定方式是否正确,格式为 Object__c['ChildRelationships__r']
  • 根据 Adam 的建议,我最终使用了一个包装类。单独使用动态绑定并不能解决问题。

标签: salesforce visualforce soql


【解决方案1】:

在这些情况下,我总是依赖对象关系映射器模式,或者简称为包装器类。对于更复杂的字段,您最终显示的是单级的类成员抽象,而不是直接来自 SOQL 语句结果的字段。这样做的一个好处是您可以简单地执行几个 SOQL 调用,以最能支持您的页面的任何方式准备数据,然后顺利呈现它。拥有这个抽象类的额外工作最终得到了很好的回报 - imo。

这是一个related post ,它准确地展示了如何在 Apex 中执行此操作。在您的情况下,您将扩展此示例以将多个 SObject 的值添加到此“ORM 样式”类的一个实例,然后从 Apex 中填充它的实例列表。此自定义对象实例列表成为 Visualforce 消耗的完美食物。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    相关资源
    最近更新 更多