我有一组基于单个数据源的主详细信息表(会话Bean包装Web服务调用)。顶级表(t1)显示机会数据,底层(t2)显示特定机会的联系人。当在t1中选择机会时,与该机会相关联的联系人在t2中显示。这些表可以按预期工作。
我有一个基于不同数据控件的只读表单(Panel Form Layout)(由会话Bean支持,通过EJB3实体调用LinkedIn API和数据库表)。 LinkedIn Session Bean方法接受我从t2中的当前行获得的参数。 (#{bindings.relatedContact.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
由于
迈克尔
答案 0 :(得分:2)
默认情况下,PageDef文件中迭代器的Refresh属性设置为“deferred”。对于您的用例,最好将其设置为“ifNeeded”。因此,请转到详细Web服务(t2)的迭代器,并将Refresh属性设置为ifNeeded。这将解决您的问题
谢