0

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

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

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

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

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

select id, name, accountId, (select id, Cost from OpportunityLineItems), (select id, name from Attachments) from Opportunity limit 20

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

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

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

4

1 回答 1

1

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

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

于 2012-07-17T15:39:47.150 回答