

お疲れ様です。nanazipと申します。  
掲題の通り、Struts2を2.3.16.1から、最新版である2.3.28.1へバージョンアップしました。

すると、jspでs:propertyで取得している値の一部が取得できなくなりました。  
具体的には、下記のようになります。

[code]

    <s:iterator value="testList" var="rst" status="stts">
    <s:set var="str" value="#rst.result"> 
    
    <!-- 値の取得ができている  s property -->
    <s:property value="%{example.util.StringUtil@toString(#str.test)}" />
    <!-- 値の取得ができていないs property -->
    <s:property value="%{example.util.StringUtil@toString(#str.gTest)}" />
    
[/code]

値は一部置き換えて掲載しております。

2.3.16.1では両方とも値の取得ができていたので、OGNL脆弱性対策で何らかの対応が加わり、後者の gTest
の呼び出しが無効になっているのではないかと推測しています。

また、値の取得ができていないs
property、gTestのフィールド名、及びgetter,setterを下記のように修正したところ、値の取得ができました。  
gTest→grpTest  
getGTest()→getGrpTest()  
setGTest()→setGrpTest()

[code]

    <s:property value="%{example.util.StringUtil@toString(#str.grpTest)}" />
    
[/code]

現状、とりあえず応急処置はできたけど、原因がわからないという所です。  
本事象を招いたバージョン、より少ない修正方法をご存知の方、ご教授いただけないでしょうか。  
お手数をお掛けします。よろしくお願いします。


CC BY-SA 3.0
2016-05-25T15:31:06.040
25171
2016-06-01T04:02:26.510
13754
question
java jsp struts
Struts2 2.3.16.1→2.3.28.1へVerUP後、jspの一部の<s:property>が実行されない


結論だけ書くと、JSP上で下記のように書けばいいと思います。

[code]

    <s:property value="%{example.util.StringUtil@toString(#str.GTest)}" />
    
[/code]


CC BY-SA 3.0
2016-06-01T02:46:07.577
25349
2016-06-01T02:46:07.577
15718
25171
answer


Struts2.3.24.1→2.3.28の段階で適用された、ognl3.0.6→3.0.11への更新が原因で発生する問題です。  
対応については gertrud様の対応が一番簡単でしょうか。


CC BY-SA 3.0
2016-06-01T04:02:26.510
25350
2016-06-01T04:02:26.510
5778
25171
answer