我有一個頁面,其中有條件呈現的內容由sidemenu中的多個鏈接控制。所有這些內容都有一個默認情況下呈現爲false的數據表。一切正常,除了當頁面加載所有的bean被執行時,所有的bean都在做昂貴的數據庫工作。如何在與有條件呈現內容相關聯的頁面加載時不初始化bean
我希望當用戶點擊側邊菜單時,相應的數據表將會呈現,只有相關的託管bean纔會被初始化。我怎樣才能做到這一點?
我有一個頁面,其中有條件呈現的內容由sidemenu中的多個鏈接控制。所有這些內容都有一個默認情況下呈現爲false的數據表。一切正常,除了當頁面加載所有的bean被執行時,所有的bean都在做昂貴的數據庫工作。如何在與有條件呈現內容相關聯的頁面加載時不初始化bean
我希望當用戶點擊側邊菜單時,相應的數據表將會呈現,只有相關的託管bean纔會被初始化。我怎樣才能做到這一點?
您有兩種基本選擇:
不要通過AJAX導航。而是通過GET進行導航。另見How to navigate in JSF? How to make URL reflect current page (and not previous one)。
或者,不要有條件地呈現內容。相反,有條件地構建內容。另請參見How to ajax-refresh dynamic include content by navigation menu? (JSF SPA)
我最近遇到了這樣的問題。我決定使用我用來決定渲染的相同條件,或者不使這個或那個組件決定初始化或不初始化它的支持變量。例如,你有JSF頁面代碼:
<h:outputText rendered="#{bean.isRendered()}" value="#{bean.text}"/>
和bean是以下幾點:
@PostConstruct
public void init(){
if(isRendered){
text = "Hello World";
}
}
的感謝!第二個鏈接看起來非常好 – 2015-03-03 00:23:41