struts2バージョンアップ((2.3.16.3→2.3.35))に関して問題、ぜひ助けてください!!!
始めまして、よろしくお願いいたします。
struts2のバージョンアップ(2.3.16.3→2.3.35)に関する質問ですが、有識の方はぜひ助けてください。
よろしくお願いいたします。
現在jarファイルを差し替えて、実行時にjboss側に下記ようなメッセージが出てきました。
JBWEB000236: Servlet.service() for servlet jsp threw exception: tag 'select', field 'list', name 'xxxx.xxxxTiming': The requested list key '#_AAA_list' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location]
該当のソースコード(jsp)
<td width="60%">
<s:set var="_AAA_list" value="%{#{}}"/>
<s:iterator value="#xxx.xxxList" var="item">
<s:set var="BBBValue" value="#item.value" />
<% java.lang.String BBBValue =
(java.lang.String)pageContext.getAttribute("BBBValue"); %>
<%if (XXXXX.checkXXX(request, "/xxx/xxx/xxx/dummy_" + BBBValue)) {%>
<s:if test="#item.value == \"x\" || #item.value == \"y\"">
<s:set var="_AAA_list" value="%{#_AAA_list.put(#BBBValue, #item.name),
#_AAA_list}" />
</s:if>
<%}%>
</s:iterator>
<s:select name="xxxx.xxxxTiming" list="#_AAA_list"
value="#xxx.xxxx.xxxx.xxx" />
<s:fielderror fieldName="xxx.xxxx" />
</td>
試したこと
いろいろ調べまして、<s:select
を表示時に、#_AAA_list
がnullに原因と判明しました。
デバッグで、item.value
、item.name
の値もちゃんと取れています、
ネックはvalue="%{#_AAA_list.put(#BBBValue, #item.name), #_AAA_list}"
で、うまく行けなく、#_AAA_list
がnullになる原因です。
補足情報(FW/ツールのバージョンなど)
バージョンアップするため、ognl-3.0.6.jarもognl-3.0.21.jarにアップしました。
上記のコードはstrutsの2.3.16.3にうまく行けますが、2.3.35にうまく行けません。