[Seasar-user:13125] Re: [SAStruts]JSTL の fn:join で例外
Yasuo Higa
[E-MAIL ADDRESS DELETED]
2008年 3月 3日 (月) 15:38:53 JST
ひがです。
> 出羽です。
>
> SAStrutsでJSTLを使ってJSPに以下のようなコードを書くと、
> <%
> String[] fuga = {"aaa", "bbb", "ccc"};
> request.setAttribute("fuga",fuga);
> %>
> ${fn:join(fuga, '=')}
>
> 結果が「aaa=bbb=ccc」のようになります。
>
>
> 同様のことをActionのプロパティで試してみました。
> [Action側]
> public String[] hoge = {"aaa", "bbb", "ccc"};
>
> [JSP側]
> ${fn:join(hoge, '=')}
>
> すると、以下のような例外になります。
> 致命的: サーブレット default のServlet.service()が例外を投げました
> java.lang.IllegalArgumentException: Cannot convert [aaa, bbb, ccc] of type class org.seasar.struts.action.ArrayWrapper to class [Ljava.lang.String;
> at org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:374)
> at org.apache.el.parser.AstFunction.getValue(AstFunction.java:102)
> at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
> at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
> <<以下省略>>
>
ActionやActionFormのプロパティは、 publicフィールドを
ELやStrutsが参照できるようにするために、
JavaBeansはMapに、配列はListにラップされています。
プロパティアクセス(.)や配列アクセス([数値])以外のやり方で、
変数にアクセスするときには気をつけてください。
ドキュメントにも追加しておきました。
http://sastruts.seasar.org/featureReference.html#JSP
よろしくお願いします。
Seasar-user メーリングリストの案内