1

シナリオはこんな感じ。約 5 つのタブを持つ rich:tabPanel があります。最初のタブには、rich:datatable があります。最初の列の要素 (a4j:commandLink) をクリックすると、別の rich:datatable が表示されます。このテーブルの最初の列の要素 (a4j:commandLink) をクリックすると、別の rich:datatable があるタブが変更され、上記と同じことが続きます。前のタブの制約を使用して、現在のタブの要素を取得します。タブを直接クリックすると、そのタブに関連するすべての要素が取得されます。それぞれの rich:datatable は異なるテーブルを参照します。各テーブルは相互に関連しています。各タブは、1 つのマネージド Bean を参照します。バックエンドで休止状態を使用しています。

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

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

ありがとう。

4

2 に答える 2

1

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

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

于 2011-03-06T04:04:16.540 に答える