[Seasar-user:8806] [Teeda] ForEach時のList+Map

Applied_MATSUDA Masaaki [E-MAIL ADDRESS DELETED]
2007年 6月 29日 (金) 14:47:25 JST


TigerCatです.


Teeda-Extension を使って開発を行っています.

ForEach時の中身に関してですが,ある避けがたい怠惰な事情により
配列+DTOもしくはList+DTOのように,DTOクラスは作成したくあり
ません.
そこで,配列+MapやList+Mapとしてしまおうと考えております.
http://teeda.seasar.org/download/2007-05-24/teeda-html-example-1.0.7.zip
にあるExample中の ForeachListMapPage.java をみて,悩んで
しまったのが,本来必要ないと思われる FooItem クラスを子クラス
として作っているところです.
そもそもMapがこれの代替であるのに,書かなければいけないと
いうのは仕様でしょうか?
結局コレを書くぐらいなら,DTO書けばいいような気になって
しまいます・・・
ひょっとして書かなくてよいのかどうか,Mapだけで対応できる
方法があれば教えてください.


あと,少し気になったことですが,
http://teeda.seasar.org/ja/extension_component_reference.html
ここの forEach の解説のところで,

[規約]
-List/配列の中身のidとHTMLテンプレート上の繰り返し項目のidをあわせる

というのがあるのですが,ちょっと意味が通じません.(私だけ?)

List/配列の中身にMapを使う場合は,テンプレート上の繰り返し
項目のid名をキーにして値を放り込んであること.
List/配列の中身にDTOを使う場合は,テンプレート上の繰り返し
項目のid名をフィールド/セッタ・ゲッタに持つDTOとしておく
こと.

ということかなー,と思っています.
元の内容では,私は最初,こんなことをやってしまっていました.
List aaaItems = new ArrayList();
Map item1 = new HashMap();
item1.put( "id", "foo" );
item1.put( "value", "FOO1" );
Map item2 = new HashMap();
item2.put( "id", "bar" );
item2.put( "value", "BOO2" );
aaaItems.add( item1 );
aaaItems.add( item2 );
return aaaItems;

まさに,
「List/配列の中身のidとHTMLテンプレート上の繰り返し項目のidをあわせる」
をやってしまったわけでして・・・(汗
ほら,リストボックスの初期値を埋めたりするとき,
label=xxx と value=xxx という具合につっこむではないですか.
あのノリかとおもった.


ではでは.




Seasar-user メーリングリストの案内