[Seasar-user:11424] Re: Render中にPageクラスのプロパティの値が変わってしまう場合がある
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 11月 4日 (日) 00:00:47 JST
小林 (koichik) です.
Date: Sat, 3 Nov 2007 05:44:46 +0900
From: "Shinichi Yanagisawa" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:11419] Re: Render中にPageクラスのプロパティの値が変わってしまう場合がある
> コピースタックを添付します。
見落としてましたが,forEach が使われているのですね.
forEach を使った場合,Page クラスには xxxItems と
同時に,その要素である xxx がプロパティとして必要に
なります.
Teeda は状態を管理するために,これらのプロパティに
対して次のような操作を行います.
for (Xxx xxx : xxxItems) {
page.setXxx(xxx);
page.setYyy(xxx.getYyy());
... // 状態の反映や保存等
xxx.setYyy(page.getYyy());
}
xxxItems の各要素を Page クラスの xxx に設定すると
同時に,xxx のプロパティ yyy も Page クラスの
プロパティ yyy に設定します.
そうやって xxxItems の持つ状態を Page クラスの直接の
プロパティに反映させた上で,状態の管理を行います.
上記の操作を今回の ShowSaleDetailPage に置き換えると,
for (SaleDetail saleDetail : saleDetailItems) {
page.setSaleDetail(xxx;
page.setSale(saleDetail.getSale());
... // 状態の反映や保存等
saleDetail.setSale(page.getSale());
}
のようになります.
xxxItems に対する xxx や,それが JavaBeans の場合は
そのプロパティ yyy 等も Page クラスに必要になりますが,
それらは Teeda が状態を管理するために使用します.
その際に値を set/get するのは仕様ということで
ご理解ください.
--
<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 メーリングリストの案内