2012-01-12 18 views
0

私のアプリケーションでは奇妙な動作が見つかりました。タブパネル内の非アクティブなタブのDatatableは値を初期化します

私たちは、複数のタブを持つrich:tabPanel switchType = "ajax"を持っています。各タブには、rich:dataTableとa4j:formの編集フォームが含まれています。

ページをリクエストすると、最初のタブがレンダリングされ、データテーブルが初期化されます。ここまでは順調ですね。 編集リンク(a4j:commandLink)をクリックすると、選択したエンティティの編集フォームが再レンダリングされ、フォームが適切に再レンダリングされます。

しかし、これに加えて、他のタブのデータテーブルからクエリを取得します...タブがアクティブではないにもかかわらず、豊富なデータセットが初期化されます。タブが非アクティブなのでレンダリングされません。 私がプレーンなh:dataTableを使用すると、問題はなくなります。つまり、結果リストは取得されません。

は、これまでのところ私は2つの回避策を得た:

  1. 私はeditLinkにlimitToListを使用する場合には、処理部が正常に機能しているが、これは、我々はすべてのコマンドボタン/リンクを適応しなければならないことを意味するであろうと、世界的なようです私はそれは私がバッキングBeanに選択したタブを結合して、sのアクティブなタブのコンテンツのみをレンダリングすることができます...再レンダリング属性に

  2. IDが含まれていない場合、メッセージは動作を停止:フラグメント

2番目の解決策はかなり単純ですが、私は今のところこれを使用していますが、私はまだ説明を求めています。

誰もこの動作に既に遭遇しましたが、wthに関する説明がありますか?

おかげ マーティン

答えて

0

私たちはどんなAJAX操作が行われた場合、ほぼすべてのコンポーネントがレンダリングされます、この問題を持っています。

私たちは、この問題は< a4jによって部品にし、周囲の部品によってlimitRender = "true" 属性を追加購入し解決:outPutPanel axajRender = "偽" /> <豊富:メッセージはajaxRendered = "偽" />。

しかし、rich:tabPanelにはlimitRender = "true"という属性があり、使用するかどうかの違いは表示されませんでした。

また、Ajaxリクエストを最適化するベストプラクティスとして、< a4j:queue ignoreDupResponses = "true" />を使用することを忘れないでください。フォームでこのタグを使用します。

0

使用<a4j:region>タブツリミットjsfツリー処理内

関連する問題