小弟最近將 Struts 2.0.11 提升到 2.1.6 之後,發現了一個問題,那就是使用 Ognl 呼叫類別中的靜態方法時,吐出來的值竟然空空如也,連錯誤訊息也沒有。
 
    <s:property value="@java.util.Locale@getDefault()" />
  
一開始我還以為是我寫錯了,搞了老半天最後也只能求助於古狗大神。很快的我找到二篇相關的文章,才發現原來在 struts 2.1.2 之後,如果要讓 Ognl 能夠呼叫類別中的靜態方法,還需要額外設定…真是一整個昏倒。
 
設定方法為:
    在 struts.propertiesstruts.xml 中將 struts.ognl.allowStaticMethodAccess 設成 true 即可 (預設值為 false),於是我在 struts.xml 中加入
 
    <constant name="struts.ognl.allowStaticMethodAccess" value="true" />
 
之後,Ognl 就能呼叫到類別中的靜態方法了。真搞不懂 Struts 2 幹嘛要這樣亂搞……
 
 
 以下為在古狗大神中找到的兩篇相關文章:
arrow
arrow
    全站熱搜

    大笨鳥 發表在 痞客邦 留言(0) 人氣()