如何刷新主页中的表并在弹出窗口中关闭ADF 11gr1中的弹出窗口

时间:2016-12-21 22:17:37

标签: oracle-adf

我的主页面(在ADF 11gR1中构建JSPX),我在其中创建了一个区域中的弹出窗口。在弹出窗口中,我尝试搜索某些ArrayList值,并希望它通过单击按钮将这些ArrayList值发送到Main页面。

我能够通过从弹出Bean调用上下文事件并处理主页面bean中的事件来实现上述要求。这两个bean都在页面流范围内。

主表绑定到MainTableBinding Richtable和Popup绑定到PopPageBinding RichPopup,它们在MainPageBean中定义。

现在在Main页面bean中,如果我试图关闭弹出窗口并通过句柄上下文事件刷新表,我就无法这样做,因为它抛出了空指针错误,弹出绑定和MainTablebinding不存在。任何解决此问题的帮助。

1 个答案:

答案 0 :(得分:0)

通常我不喜欢将UI对象绑定到bean,但是在bean中使用JSFUtils来查找组件。如果您没有JSFUtils(和ADFUtils)类,您应该能够通过简单的Web搜索找到它。

然后从主页面bean中你可以执行以下操作:

RichPopup pop = (RichPopup)JSFUtils.findComponentInRoot("popupid");
if (pop != null) { 
   pop.hide();
}

请注意,在按ID定位组件时,您需要指定区域ID,例如,当主页中有许多区域在每个区域中具有相同的popupid时。例如,使用Chrome“Inspect”获取弹出窗口的ID,其中包含区域ID前缀。

您可以使用类似方法刷新表格:

ADFFacesContext.getCurrentInstance().addPartialTarget(JSFUtils.findComponentInRoot("tableId"));

关键是获取JSFUtils和ADFUtils库的副本,以使这种方法起作用。