[Seasar-user:5236] Re: 【S2JSF1.0.18】s:forEachでMap$EntryのメソッドにアクセスするとIllegalAccessExceptionが発生する。

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 11月 21日 (火) 20:22:43 JST


米林です。

From: "SCC村上剛志" <[E-MAIL ADDRESS DELETED]>
Sent: Monday, November 20, 2006 2:05 PM
 
> お世話になっております。
> 村上です。
> 
> s:forEachにおいてMap$Entryのメソッドを実行した際に
> メソッドのアクセスエラーが発生しましたので、対応を
> お願いしたくご連絡いたしました。
> 
>   Java(SUN) 1.5.0_06
>   Tomcat 5.5.17
>   Seasar2 2.3.15
>   S2JSF 1.0.19
> 
> の環境にて、HashMapのEntrySetを返すDto(sampleDto)に
> 対してMap$Entry#getKey,getValueを実行しようとすると、
> IllegalAccessExceptionが発生します。
> 
> <ul>
>   <div m:inject="s:forEach"
>     m:items="#{sampleDto.entrySet}"
>     m:var="entry" m:varIndex="index">
>     <li>
>       <span m:value="#{entry.key}" /> : 
>       <span m:value="#{entry.value}" />
>     </li>
>   </div>
> </ul>
 
> デバッグしてみたところ、Seasar2のPropertyDescImplで
> 保持しているreadMethodが、パッケージプライベートな
> HashMap$Entryのメソッドであるため、MethodUtil#invoke
> にてIllegalAccessExceptionが発生しているようです。
> 
> 
> 対応が難しいようでしたら、もし回避策などありましたら
> ご教示いただきたいと思います。

回避策というよりも、これはキーと値を持つ別のObjectを
自前でDTO内に作成した方が良いと思います。
パッケージプライベートなメソッドをEL式から呼ぶ事は
出来ないと思います。

---
米林 正明
[E-MAIL ADDRESS DELETED]



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