[Seasar-user:12875] Re: 【teedaExt】saveState/restoreStateの動作に関して
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2008年 2月 14日 (木) 20:48:10 JST
ひがです。
> >
> > お世話になっております。鈴木です。
> >
> > UIComponentのsaveState/restoreStateの動作に関して教えていただきたいと思います。
> > restoreStateに引数で渡ってくるコンポーネントの状態ですが、
> > 直近にsaveStateされたものではなく、
> > 始めてComponentTreeを作った時のものが渡ってきているような感じがします。
> > そのような動作なのでしょうか?
> >
> これは、意図したものです。
>
> > これを直近のsaveStateされたものに変更する事はできませんでしょうか?
> > (こうなるのがJSFの仕様だと思っていました)
> >
> StateManagerを
> org.seasar.teeda.core.application.implの
> TeedaSessionStateManagerに変えれば、
> 直前のものを保存するようになります。
>
> ただし、そうすると、コンポーネントステートを
> すべてセッションに保存するようになり、
> 多くのメモリを必要とするようになります。
>
> また、セッションに保存するときに、コンポーネントステートの
> オブジェクト(SerializedView)を作るので、動作も遅くなるでしょう。
説明が足らなかったので補足します。
確かに、TeedaSessionStateManagerを使えば、JSFの仕様どおりに動くの
ですが、メモリとパフォーマンスを失います。
それを避けるために、Teedaでは、UIComponentをステートレス
にすることで、セッションを使わないようにがんばっているのです。
お勧めは、UIComponentをステートレスに作ることです。
直前の状態が復元されることを当てにしないという意味です。
よろしくお願いします。
Seasar-user メーリングリストの案内