2016-12-21 108 views
0

我已在其中創建彈出窗口並在區域中的主頁面(JSPX在ADF 11gR1中生成)。在彈出窗口中,我試圖搜索某些值的ArrayList,並希望它通過單擊按鈕將這些ArrayList值發送到主頁面。如何在主頁面中刷新表格並在彈出窗口中關閉ADF 11gr1中的彈出窗口

我能夠通過從彈出的Bean中調用上下文事件並處理主頁中的事件來實現上述要求。這兩個bean都處於頁面流範圍內。

主表綁定到MainTableBinding Richtable和Popup綁定到在MainPageBean中定義的PopupBinding RichPopup。

現在在主頁面bean如果我試圖關閉彈出窗口並通過句柄上下文事件刷新表,我無法做到這一點,因爲它是拋出空指針錯誤,彈出綁定和MainTablebinding做不存在。任何幫助解決這個問題。

回答

0

通常我不喜歡將UI對象綁定到bean,但在bean中使用JSFUtils來查找組件。如果你沒有JSFUtils(和ADFUtils)類,你應該可以通過簡單的網頁搜索找到它。

然後從主網頁豆你可以這樣做:

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

注意有些情況下,你的定位是通過ID組件時需要指定域ID,以及情況下,例如當你有許多地區在主頁面中,每個區域都有相同的彈出窗口。例如,使用Chrome「Inspect」來獲取將包含區域ID前綴的彈出窗口的ID。

您可以使用類似的方法刷新表:

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

的關鍵是讓JSFUtils和ADFUtils庫的副本這種方式來工作。

+0

我可以關閉彈出窗口,但由於某種原因主表不會刷新所有...我可以看到該組件被發現..但沒有運氣:( –

+0

嘗試獲得句柄迭代器,並重新執行查詢和/或刷新迭代器,然後使用上面的代碼刷新組件 – 32U

+0

迭代器是由bean數據控制創建的。試圖通過重新執行和添加部分觸發器來刷新所有手段。 。但沒有任何工作......它只是刷新,我可以看到新的bean值通過檢查bean的大小得到更新..但表仍然保持原樣.... –

相關問題