[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 メーリングリストの案内