[Seasar-user:11430] Re: Render中にPageクラスのプロパティの値が変わってしまう場合がある
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 11月 4日 (日) 07:30:21 JST
小林 (koichik) です.
Date: Sun, 4 Nov 2007 06:23:47 +0900
From: "Shinichi Yanagisawa" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:11428] Re: Render中にPageクラスのプロパティの値が変わってしまう場合がある
> set/get することは問題ないですが、値が変わってしまうのは
> なぜでしょうか。
> 今回の例ではSaleクラスが保持しているsaleDetailsとuserが
> NULLになってしまいました。
forEach を使った場合,状態は 〜Items で維持されます.
今回の例では saleDetailItems です.
saleDetailItems の要素に対応する saleDetail や,
saleDetail のプロパティに対応する sale は,
Teeda が saleDetailItems のある要素とそのプロパティを
参照するためのスナップショットとして使われます.
状態が正しく維持されるには saleDetailItems を
itemsSave または itemsSessionSave で保持する必要が
ありますが,そうなっていません.
そのため,saleDetailItems の状態は維持されず,
そのスナップショットに過ぎない sale の状態も
維持されなくても当然ということになります.
柳澤さんの意図は sale が主で saleDetailItems は
そのプロパティに過ぎないということだと思いますが,
Teeda からはそのようには見えません.
Page クラスの sale を saleDetailItems のスナップ
ショットとして使われたくなければ,Page クラスで
sale を保持する (主となる) プロパティ名を
SaleDetail が持っているプロパティと重ならない
名前にする必要があります.
繰り返しになりますが,xxxItems がある場合の xxx
および,xxx のプロパティ yyy が Page クラスの
プロパティとして存在する場合,それらは xxxItems の
ある要素を参照するためのスナップショットとして
使われることに注意してください.
--
<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 メーリングリストの案内