1

我有一组基于单个数据源(包装 Web 服务调用的会话 Bean)的主详细信息表。顶层表 (t1) 显示机会数据,底层 (t2) 显示特定机会的联系人。在 t1 中选择机会时,与该机会关联的联系人将显示在 t2 中。这些表按需要工作。

我有一个基于不同数据控件的只读表单(面板表单布局)(由通过 EJB3 实体调用 LinkedIn API 和数据库表的会话 Bean 支持)。LinkedIn Session Bean 方法接受我从 t2 中的当前行获取的参数。(#{bindings.relatedContact.currentRow.dataProvider.id})我已在表单上将 PartialTriggers 设置为“t2”。

当页面第一次加载时,表 t2 的第一行(A 行)被选中,表单显示与该行关联的数据。如果我选择另一行(B 行),会话 Bean 会使用新选择的行中的 id 值调用,但表单会显示 A 行的关联数据。随后,每次我在 t2 中选择一行时,都会使用新值调用 bean,但表单会显示来自先前选择的行的数据。

我假设正在发生的事情是刷新了表单(使用数据控件中的陈旧数据),然后调用了会话 bean。我在 bean 中使用 print 语句和 Thread.sleep() 验证了这一点。

这是正确的行为吗?如何确保在刷新表单之前调用 bean?

我正在使用 JDeveloper 版本 11.1.2.2.0

谢谢

迈克尔

4

1 回答 1

2

默认情况下,PageDef 文件中迭代器的 Refresh 属性设置为“延迟”。对于您的用例,最好将其设置为“ifNeeded”。因此,转到详细 Web 服务 (t2) 的迭代器并将 Refresh 属性设置为 ifNeeded。这将解决您的问题

坦率

于 2012-08-22T07:18:17.630 回答