2011-03-06 3 views
1

シナリオは以下のようになります。私は約5つのタブを持つrich:tabPanelを持っています。最初のタブには、リッチ:データテーブルがあります。最初の列の要素(a4j:commandLink)をクリックすると、別のrich:datatableが得られます。この表の最初の列の要素(a4j:commandLink)をクリックすると、別のrich:datatableを持つタブが変更され、同じことが上記のように続きます。前のタブの制約は、現在のタブの要素を取得するために使用されます。タブを直接クリックすると、そのタブに関連するすべての要素が取得されます。各リッチ:データテーブルは異なるテーブルを参照します。各テーブルは相互に関連しています。各タブは、単一のマネージドBeanを参照します。私はバックエンドで休止状態を使用しています。RichfacesでBeanを管理する適切な方法を提案してください

問題が開始されます。ストアド変数がたくさんあるので、マネージドBeanをセッションベースまたはアプリケーションベースにする必要はありません。要求の範囲を指定すると、次のことが起こります。タブの最初のテーブルは完全にレンダリングされますが、最初の列をクリックすると、スコープがリクエスト(たとえばactionlistener)であるため、2番目のテーブルはすべての制約を使用しません。私はどうしたらいいですか ?

私ができることの1つは、テーブルごとに1つのマネージドBeanを定義することです。または、セッションスコープを強制的に使用します。それとも他の方法がありますか?助けてください。

ありがとうございました。

答えて

1

すでにJSF 2.0を使用している場合は、ビュースコープを使用してください。これは、同じページ(ブラウザのタブ/セッションとは関係なく)とやりとりしている限り存続するスコープです。

JSF 1.xを使用している場合は、ビューで宣言されている<a4j:keepAlive beanName="#{bean}" />のリクエストスコープを使用してください。 JSF 2.0のビュースコープのように動作します。

+0

ビュースコープでは、tabpanelでタブを変更するとBeanが更新されますか?私が言及したように、各タブはマネージドBeanです。では、タブを変更すると、ビューが変更されるので、タブを変更するとどうなりますか? TabPanelスイッチタイプはクライアントです。 – Prabhat

+0

これらのBeanをビューのスコープ付き参照で参照します。 – BalusC

+0

ありがとうございましたが、それは私が意味するものではありません。マネージドBeanビュースコープを指定すると、各タブはBeanを参照します。タブパネルのタブを変更すると、パラメータが維持されるか、タグの下のすべての範囲になりますか? – Prabhat

2

Richfaces 3.0.0以上を使用している場合は、@KeepAlive でBeanに注釈を付けるか、代わりに<a4j:keepAlive beanName="#{bean}" />タグを使用してください。 これは、JSF 2.0のビュー・スコープに相当します。

+0

ありがとうございました。 Rep ++ – Prabhat