在VF页面上显示多子查询,动态字段,动态对象SOQL查询结果

时间:2012-07-17 14:42:29

标签: salesforce visualforce soql

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

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

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

从帐号中选择ID,姓名,BillingState,(从通讯录中选择ID,姓名,标题),(从商机中选择ID,金额),其中名称为'%Corp%'

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

从商机限额20

选择ID,名称,accountId,(选择ID,来自OpportunityLineItems的费用),(从附件中选择ID,名称)

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

作为旁注,下面是我在尝试使用动态绑定时在VF页面上遇到的错误

错误:java.lang.NullPointerException
错误:null

1 个答案:

答案 0 :(得分:1)

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

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

相关问题