[Seasar-user:17285] Re: [teeda] Listを使用したforEachの表示について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 4月 20日 (月) 23:30:31 JST


小林 (koichik) です.

Date:    Mon, 20 Apr 2009 20:06:57 +0900
From:    木村 究道 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17283] Re: [teeda] Listを使用したforEachの表示について

> まず解決法は、customizer.dicon の下記の3行(7〜9行目)を削除する
> ことで、期待通りの動きとなりました。
> 
>     <initMethod name="addCustomizer">
>       <arg>traceCustomizer</arg>
>     </initMethod>
> 
> 
> そこで質問です、削除したカスタマイザはトレース出力のカスタマイザと
> 理解しておりますが、この解決法で問題ないでしょうか?

なるほど,それは盲点でしたね.

S2AOP は対象のクラスをサブクラス化してメソッドを
オーバーライドし,インターセプタを呼び出します.
しかし,S2AOP は J2SE1.4 で実装されているため,
generics には対応していません.

そのため,

public List<ListTestDto> getListDtoItems()
public void setListDtoItems(List<ListTestDto> listDtoItems)

はオーバーライドされて

public List getListDtoItems()
public void setListDtoItems(List listDtoItems)

となってしまい,generics の型引数は失われます.
こうなると,List を <input> の内容で更新
することはできません.

public フィールドであれば AOP の影響を
受けなかったのですけどね.


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