2012-06-10 75 views
1

這裏是我的情況:綁定到價格昂貴的JSF屬性的正確方法是什麼?

我使用JSF。

  1. 我有每5秒刷新頁面(但用戶不會注意到它,因爲一切都在Ajax化)
  2. 我想有顯示的事情的清單給用戶的模式窗口當用戶點擊某物時(例如,一個按鈕)。所以每次用戶點擊該按鈕時,模式都會顯示最新列表。

現在我有以下內容:加載屬性的模式。該屬性從數據庫加載內容並將列表返回給JSF頁面。

的主要問題是因爲頁面刷新每5秒鐘,此屬性稱爲每5秒(即,DB的請求)。

彙總:我想有一個加載列表中的每個用戶點擊一個按鈕,一個頁面,刷新(Ajax化)每5秒內的一個模式。

做這些事情的正確方法是什麼?指向好的教程是很好的答案,我不需要代碼,而是理解最佳實踐。

謝謝。

回答

0

我從每當用戶點擊按鈕數據庫獲取的列表中,並把它放入該生存當前請求(範圍=會話,查看,會話,或其他)的Bean的屬性,然後結合該財產與EL表達。

要在點擊按鈕獲取名單,已在按鈕觸發重新渲染面板的內容Ajax請求,並且使得面板的AJAX請求完成後可見。你沒有說過你使用的是什麼ajax或組件庫;與RichFaces的,它是這樣的:

<a4j:commandButton 
    action="#{mybean.fetchListFromDatabase}" 
    rerender="panelcontent" 
    oncomplete="Richfaces.showModalPanel('thepanel')" 
/> 
+0

RequestScope bean不適合這種情況,請記住RequestScope是在服務器的每個請求(在這種情況下,在每個ajax調用中)創建的。範圍會議也可以完成這項工作,但最好將窄範圍用於手頭的任務。 –

+0

我知道;在我的答案中,我說要使用請求範圍? – meriton

+0

謝謝你的答案。但是我如何在模態窗口的背景下做到這一點? 現在我有一個僅僅被CSS隱藏的表單(所以表單在每個頁面刷新時都被提交)。當我點擊按鈕時,它所做的只是顯示帶有列表的表單。 我需要某種服務器生成的模態? – fabiorocha

0

模式面板在RichFaces和PrimeFaces庫已經實現

兩個實現包括Ajax和jQuery來管理基本的行爲。您可以使用其中的一種來實現您的模態面板和從DB恢復數據的列表(使用ViewScope託管bean)。

如果您不能或可能不希望添加任何這些庫到你的項目,你可以使用自己的代碼,並使用它作爲您實現啓動(這兩個庫都是開源的)。

相關問題