我對RichFace的(3.3.3)TabPanel有個疑問。我曾參與過使用TabPanel的兩個項目。在每個項目上,我都注意到在不可見的選項卡上的組件仍然有其調用的「getter」方法。Rich TabPanel的getters在標籤內容未呈現時調用
例如,第一片具有在一個數據表和任何時間請求從任何其他片(包括AJAX請求)被綁定到DataTable在第一選項卡仍具有豆製成它的吸氣劑叫。
我認爲會發生這種情況(即使該選項卡當前未在UI中呈現),因爲該組件仍處於組件層次結構中?換句話說,所有組件都是父標籤面板的子組件,因此每個請求都會被處理。即使它們不可見也是如此。
好吧......如果我的假設是真的,那麼我需要一種方法來不有數據檢索邏輯調用的未使用的標籤。我讀過關於懶惰加載數據的帖子(不把數據檢索邏輯放在getter中),因爲getter可能會被調用很多次。我正在盡力堅持這一點;我看到的問題是,即使我已經將綁定到表的bean(在選項卡上)與請求範圍一起定義,並且getter將懶惰地加載表的數據,但bean會被實例化,並且數據(懶洋洋地),從其他選項卡的每個ajax請求。
有一種方法可以解決所有內容脫離RichFace的TabPanel並滾動我自己的問題。
我試着讓綁定到表會話的bean作用域,並「緩存」getter返回的表的數據,但問題是沒有生命週期方法綁定到當tab再次呈現時(通過手動點擊選項卡或以編程方式選擇選項卡)。
我會很感激任何建議。
好問題。我與我的標籤面板完全一樣的問題,但是當我嘗試將一個服務器端方法(使用ajax支持)連接到ontabenter方法(爲特定選項卡執行數據檢索)時,我的方法不會被打中在所有。顯然不是這樣設計的?令人沮喪。 – Lisa 2013-10-29 05:21:12