11

同じページのポストバック全体でリクエスト スコープ Bean を維持することは可能ですか?

一般的な問題は、Bean がリクエストの最後に破棄され、フォームの送信ごとに再作成されるためです。たとえば、動的に操作されたブール値disabledがデフォルト値readonlyrenderedリセットされ、フォームが意図したとおりに機能しなくなります。

4

2 に答える 2

16

セッション スコープはオプションではないと仮定します。それ以外の場合、この質問はほとんど意味がありません。

Tomahawk<t:saveState>を使用して実行できます。次の行をページのどこかに追加します。

<t:saveState value="#{bean}" />

RichFaces<a4j:keepAlive>も同じことを行います。

<a4j:keepAlive beanName="#{bean}" />

または、余裕がある場合は、少なくとも JSF 2.x にアップグレードし、Bean をビュースコープに入れます。

@ManagedBean
@ViewScoped
public class Bean implements Serializable {
    // ...
}

方法に関係なく、同じビューにポストバックして戻り続けるnullvoid、アクションメソッドから戻ると、同じ Bean が存在します。

以下も参照してください。

于 2011-05-05T12:01:33.977 に答える
0

後で取得するために、Bean をアプリケーション スコープ内の Map などのどこかに保存しない限り、そうではありません。

セッションスコープにしないのはなぜですか?これが Session スコープの目的であるため、同じ Session 中の複数の Request が同じ状態になる可能性があります。

于 2011-05-05T12:00:00.477 に答える