

始めまして、よろしくお願いいたします。  
struts2のバージョンアップ(2.3.16.3→2.3.35)に関する質問ですが、有識の方はぜひ助けてください。  
よろしくお願いいたします。

現在jarファイルを差し替えて、実行時にjboss側に下記ようなメッセージが出てきました。

[code]

    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]
    
[/code]

### 該当のソースコード(jsp)

[code]

    <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>
    
[/code]

### 試したこと

いろいろ調べまして、`<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にうまく行けません。


CC BY-SA 4.0
2018-10-12T05:18:18.497
49217
2019-08-05T11:01:50.203
2018-10-12T05:34:50.237
19110
30492
question
struts
struts2バージョンアップ((2.3.16.3→2.3.35))に関して問題、ぜひ助けてください！！！


下記のように改修し、解決しました。いろいろありがとうございました。

[code]

    <s:set var="_AAA_list" value="%{#{}}"/> 
    
[/code]

を

[code]

    <s:set var="_AAA_list" 
    value="#@java.util.LinkedHashMap@{}"/>
    
[/code]

に修正し、

[code]

    <s:set var="_AAA_list" value="%{#_AAA_list.put(#BBBValue, #item.name),
     #_AAA_list}" /> 
    
[/code]

を

[code]

    <s:set value="#_AAA_list.put(#BBBValue, #item.label)" /> 
    
[/code]

に修正して 、うまく行けました。


CC BY-SA 4.0
2018-10-12T09:27:10.420
49224
2018-10-12T09:58:12.333
2018-10-12T09:58:12.333
20098
30492
49217
answer