[Seasar-user:11068] Re: [Teeda]public transient xxClass xxField;
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 10月 17日 (水) 15:00:04 JST
小林 (koichik) です.
Date: Wed, 17 Oct 2007 10:57:01 +0900
From: "TAKEUCHI Shinichi / 竹内 伸一" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11052] Re: [Teeda]public transient xxClass xxField;
> public 宣言していたのはPageクラスの共通の親となるAbstractクラス
> でして、TakeOver宣言はしていませんでした。
そうでしたか.
> 親クラスでのPublicは
> 自動的に引継ぎの対象となってしまうということでしょうか?
そんなことはないです.
> また、引継がない場合は、Desirialize時にS2コンテナが再度
> DIしてくれるということですね。
ちょっと違います.
Page クラス自体はシリアライズ・デシリアライズの
対象ではなく,そのプロパティ (public field 含む) が
対象です.
ただし,Serializable でないプロパティは対象外です.
# プロパティに設定されているオブジェクトではなく
# プロパティの型で判断しているので,KSelectItemHelper が
# インタフェースの場合はこの KSelectItemHelper が
# Serializable を extends していないと対象になって
# しまいます.
Page クラスはリクエストの度に新しいインスタンスが
コンテナから取得されます.
Helper などはその際に DI されます.
なので,Page クラスは Serializable にする必要は
ありません.
# もし Serializable にしているなら外してください.
ひとまず,
[Seasar-user:11011]
> HotDeployで実行しているのですが、単にpublic宣言だけですと、
> ページを遷移する時にNotSerializableExceptionが発生します。そこで、
この時のスタックトレースも見せてください.
# transient が無いケースです.
# 上の数行ではなく,丸ごと全部お願いします.
できれば,現可能な最低限のサンプルを提供して
いただくのがいいと思います.
その際は Teeda HTML Example に置くだけで
確認できるようだと助かります.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内