0

セッションを使用せずに一時的に JSF アプリケーションの状態を保存する方法について:

別の方法は、Apache Tomahawk ライブラリの t:saveState を使用することです。最近の別の代替手段は、CDI @ConversationScope を使用することです。

t:saveState x @ConversationScope
それぞれの長所と短所は何ですか? どちらを使用しますか?その理由は?
メモリ消費(セッションで消費されるスペースと時間)については、 @ConversationScope の方が優れていますか?

ステートレス JSF xt:saveState
JSF 2.2 では、ステートレスで実行される可能性があります。コンポーネント ツリーは永続化されていないため、t:saveState は機能しません。それが正しいか?!

JSF 1.2 から JSF 2.x に移行するアプリがあります。t:saveStave を使用したビューがたくさんあります。
現在、セッション サイズが大きくなりすぎています。これは、主にセッション レプリケーションの問題です。

t:saveState を @ConversationScope に置き換える価値はありますか?


更新: ほとんどのユース ケースはフロー (ウィザードなど) です。したがって、@ViewScope を適用できませんでした。

4

1 に答える 1

4

セッションを使用せずに一時的に JSF アプリケーションの状態を保存する方法について:

別の方法は、Apache Tomahawk ライブラリの t:saveState を使用することです。最近の別の代替手段は、CDI @ConversationScope を使用することです

<t:saveState>は古い JSF 1.x の時代のものであり、それらのアプリケーションでは引き続き使用する必要があります。@ConversationScopeCDI 1.0 に由来し、いくつかのリクエストに沿って JSF Bean とコンポーネントの状態の寿命を延ばし、リクエストに沿って渡す識別子を使用します。

JSF 2 を使用する場合の最良の代替手段は@javax.faces.bean.ViewScopedです。JSF 2.2 以降@javax.faces.view.ViewScopedでは、CDI 1.1 と互換性のあるものを使用する必要があります。

CDI 1.0 とともに JSF 2.0.x または 2.1.x を使用する場合は、@ViewScoped. これを解決するために、CDI によって管理される JSF Bean のビュー スコープを許可するサード パーティ ライブラリがあります。

t:saveState を @ConversationScope に置き換える価値はありますか?

JSF 2.x に移行しているため、の使用をまったくやめなければなりません。<t:saveState>JSF 2.x のバージョンによっては、@ViewScopeまたはその代替手段を使用する必要があります。フローを実装するときのように、いくつかのビューで Bean を存続させたい/維持する必要がない限り、使用はお勧めしません@ConversationScopeが、JSF 2.2 は@FlowScoped.

より詳しい情報:

于 2014-05-16T20:23:05.360 に答える