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