[Seasar-user:11427] Re: Pageクラスのプロパティ値にEntityクラスを使用した場合すべてのメソッドが呼ばれてしまう
mariko seki
[E-MAIL ADDRESS DELETED]
2007年 11月 4日 (日) 01:29:46 JST
関と申します。
横から失礼致します。
> > Pageクラスでは、画面表示に必要なメソッド(HtmlのID値に紐付いているgetter,
> > setterメソッド)だけが呼ばれることを想定していましたが、どうやらすべてのpublic
> > メソッドが呼ばれてしまうようです。
> > 余分なDtoを作成せずにこの問題を回避する方法はあるでしょうか?
>
> Dto の代わりに Map を使うくらいしかないと思います.
私も昨年Teedaを使っていた際に同じ問題にへこみました。
ソースを見た限りでは、
TForEach#processBeanItem()の
foreachのItemから値を取得し、その値をPageにSetしている箇所で、
「PageクラスにPropertyがあるか否か」を判定してあげればいいのではないかと思っていたのですが、
いかがでしょうか?
(PageにSetしないなら、ItemからGetしなくてよいはずなので。)
こんなかんじで。
---------------
for (int i = 0; i < itemBeanDesc.getPropertyDescSize(); i++) {
final PropertyDesc pd = itemBeanDesc.getPropertyDesc(i);
final String name = pd.getPropertyName();
if (beanDesc.hasPropertyDesc(name)) {★PageクラスにPropertyがあるか否か
final Object value = getValue(itemBeanDesc, item, name);
setValue(beanDesc, page, name, value);
}
}
---------------
実際にこの修正を加えて開発したわけではないので、他へ影響あって無理ーということでしたらごめんなさい。
不要なGet呼び出しは無いほうが、パフォーマンス的にもいいことあるんじゃないか、という素人考えでした。
以上です。
Seasar-user メーリングリストの案内