如何刷新主页中的 table 并在弹出窗口中关闭 ADF 11gr1 中的弹出窗口
How to refresh table in main page and close popup in ADF 11gr1 with in the popup
我在主页(ADF 11gR1 中构建的 JSPX)中创建了一个区域弹出窗口。在弹出窗口中,我试图搜索某些 ArrayList 值,我希望它通过单击按钮将这些 ArrayList 值发送到主页。
我能够通过从弹出 Bean 调用上下文事件并在主页 Bean 中处理该事件来实现上述要求。这两个 bean 都在页面流范围内。
Main table 绑定到 MainTableBinding Richtable,Popup 绑定到在 MainPageBean 中定义的 PopupBinding RichPopup。
现在在主页 bean 中,如果我试图关闭弹出窗口并通过句柄上下文事件刷新 table,我将无法执行此操作,因为它会抛出空指针错误popupbinding 和 MainTablebinding 不存在。解决此问题的任何帮助。
通常我不喜欢将 UI 对象绑定到 bean,而是在 bean 中使用 JSFUtils 来查找组件。如果您没有 JSFUtils(和 ADFUtils)class,您应该可以通过简单的网络搜索找到它。
然后您可以从主页 bean 执行如下操作:
RichPopup pop = (RichPopup)JSFUtils.findComponentInRoot("popupid");
if (pop != null) {
pop.hide();
}
请注意,在某些情况下,通过 id 定位组件时,您还需要指定区域 id,例如,当主页中有许多区域且每个区域中的 popupid 相同时。例如,使用 Chrome "Inspect" 来获取将包含区域 ID 前缀的弹出窗口的 ID。
您可以使用类似的方法刷新 table:
ADFFacesContext.getCurrentInstance().addPartialTarget(JSFUtils.findComponentInRoot("tableId"));
关键是要获取 JSFUtils 和 ADFUtils 库的副本,以使这种方法起作用。
我在主页(ADF 11gR1 中构建的 JSPX)中创建了一个区域弹出窗口。在弹出窗口中,我试图搜索某些 ArrayList 值,我希望它通过单击按钮将这些 ArrayList 值发送到主页。
我能够通过从弹出 Bean 调用上下文事件并在主页 Bean 中处理该事件来实现上述要求。这两个 bean 都在页面流范围内。
Main table 绑定到 MainTableBinding Richtable,Popup 绑定到在 MainPageBean 中定义的 PopupBinding RichPopup。
现在在主页 bean 中,如果我试图关闭弹出窗口并通过句柄上下文事件刷新 table,我将无法执行此操作,因为它会抛出空指针错误popupbinding 和 MainTablebinding 不存在。解决此问题的任何帮助。
通常我不喜欢将 UI 对象绑定到 bean,而是在 bean 中使用 JSFUtils 来查找组件。如果您没有 JSFUtils(和 ADFUtils)class,您应该可以通过简单的网络搜索找到它。
然后您可以从主页 bean 执行如下操作:
RichPopup pop = (RichPopup)JSFUtils.findComponentInRoot("popupid");
if (pop != null) {
pop.hide();
}
请注意,在某些情况下,通过 id 定位组件时,您还需要指定区域 id,例如,当主页中有许多区域且每个区域中的 popupid 相同时。例如,使用 Chrome "Inspect" 来获取将包含区域 ID 前缀的弹出窗口的 ID。
您可以使用类似的方法刷新 table:
ADFFacesContext.getCurrentInstance().addPartialTarget(JSFUtils.findComponentInRoot("tableId"));
关键是要获取 JSFUtils 和 ADFUtils 库的副本,以使这种方法起作用。