2012-01-12 56 views
0

我剛在應用程序中發現了一個奇怪的行爲。Databable在tabpanel中的非活動選項卡中初始化值

我們有一個豐富的:tabPanel switchType =「ajax」帶有多個選項卡。每個選項卡都包含一個rich:dataTable和一個帶有a4j:form的編輯表單。

現在,當我們請求頁面時,第一個選項卡被渲染並且數據表被初始化。到現在爲止還挺好。 用戶現在可以單擊編輯鏈接(a4j:commandLink)來重新編輯所選實體的編輯表單,並且表單被正確地重新編輯。

但是:除此之外,我們從其他選項卡上的數據表中獲取查詢...即使選項卡不活動,富數據表也會初始化。由於選項卡處於非活動狀態而未呈現 奇怪的是,如果我使用普通的h:dataTable,問題就會消失,即沒有爲此結果列表提取結果列表。

到目前爲止,我有兩個解決方法:

  1. 如果我使用限於列表上EDITLINK似乎處理部分工作正常,但是這將意味着,我們要適應所有CommandButton控件/鏈接和全球消息停止工作,如果我不包括它的ID到重新呈現屬性...

  2. 我可以選擇的選項卡綁定到後臺bean,並以S僅渲染活動標籤的內容:片段

雖然第二種解決方案非常簡單,現在我正在使用這個解決方案,但我仍在尋求解釋。

有沒有人遇到過這種行爲,並且對此有何解釋?

感謝 馬丁

回答

0

我們確實有這個問題,在進行任何操作阿賈克斯幾乎所有的組件才能得到渲染。

我們解決了這個問題,通過購買< A4J加入limitRender = 「true」 屬性的組件和周邊元件:outPutPanel axajRender = 「假」/> <豐富:消息ajaxRendered = 「假」/>。

但是,rich:tabPanel具有屬性limitRender =「true」,如果不使用它,它不會顯示任何差異。

還記得要使用< a4j:queue ignoreDupResponses =「true」/>作爲幫助優化Ajax請求的最佳實踐。在表單中使用此標籤。

0

使用<a4j:region>內部標籤限制jsf樹處理

相關問題