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