在数据控件返回新值之前,ADF部分页面刷新更新表单



我有一组基于单个数据源的主细节表(包装web服务调用的会话Bean)。顶层表(t1)显示机会数据,底层表(t2)显示特定机会的联系人。当在t1中选择机会时,在t2中显示与该机会相关联的联系人。这些表格可以根据需要工作。

我有一个基于不同数据控件的只读表单(Panel form Layout)(由会话Bean支持,该会话Bean通过EJB3实体调用LinkedIn API和数据库表)。领英会话Bean方法接收一个参数,该参数是我在t2中从当前行获得的。(#{bindings.rerelatedContact.currentRow.dataProvider.id})我已在表单.上将PartialTriggers设置为't2'

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

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

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

我使用的是JDeveloper 11.1.2.2.0版

感谢

Michael

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

Frank

最新更新