2011-07-18 69 views
1

是否有更新所有組件的方法,或者是否需要手動選擇每個ID?我有一個ajax html5檢測腳本,並不想通過id更新每個組件。Ajax使用JSF更新所有組件

謝謝

回答

3

只需使用公共父組件的ID。

<h:panelGroup id="someParent"> 
    <h:someComponentToUpdate ... /> 
    ... 
    <h:someComponentToUpdate ... /> 
    ... 
    <h:someComponentToUpdate ... /> 
    ... 
</h:panelGroup> 
... 
<f:ajax render="someParent" /> 

或使用@all刷新整個頁面。

<f:ajax render="@all" /> 
+0

這確實會影響瀏覽器的後退按鈕。有沒有辦法在不設置瀏覽器歷史記錄的情況下呈現所有組件? – alexander

2

如果您需要根據事件調用更新,我建議您使用PrimeFaces。查看他們的展櫃http://www.primefaces.org/showcase-labs/ui/home.jsf。下面展示瞭如何使用更新組件當按鈕被點擊

<p:commandButton value="Test" update="container" actionListener="#{myBean.process}"/> 

然後有一個包裝容器環繞要更新一樣BalusC上面顯示的所有組件。

<h:panelGroup id="container"> 
    ... 
    // All components you want to update here. 
</h:panelGroup> 
+0

只是一件小事...添加布局=「塊」來渲染div不是更好嗎? otherwiste h:panelGroup會呈現一個範圍,如果你在這個範圍內有div,它會導致html無效。 – marcel