2011-07-18 5 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にチェックしてください。下のボタンは、次にあなたがBalusCは、上記のように示して更新したいすべてのコンポーネントの周りのラッパーコンテナラップを持って

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

をクリックしたときの更新コンポーネントを使用する方法を示しています。

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

ちょっと小さなことです... divをレンダリングするためにlayout = "block"を追加する方がいいですか? otherwiste h:panelGroupはスパンをレンダリングし、このスパンの内側にdivがある場合、無効なHTMLが返されます。 – marcel