問題描述:
  在 struts2 讀取 Cookie 可以使用 CookieInterceptor 與 Action 實作 CookiesAware 介面的方式,讓 CookieInterceptor 將 Cookie 裏的值放入 Map 並丟入 Action 中。但此次在實作時,CookieInterceptor 竟然會丟出『No object in the CompoundRoot has a publicly accessible property named 'Cookie 名稱' (no setter could be found) 』的錯誤並中斷程式的執行。
 
追查程式的結果,發現 CookieInterceptor 不但會將 cookie 值包成 Map 丟入 Action,還會透過 Ognl 試著找出 set'Cookie名稱'(String value) 來將值塞入 Action 中,因此,如果 Action 中沒有相對應的 set 方法,就會丟出 Exception。


解決方法:
  方法有二種
  1. 在 Action 內加入 set'Cookie名稱'(String value) 的方法。

  2. 在 struts.xml 中,將 struts.devMode 設成 false。(建議使用)
   <constant name="struts.devMode" value="true" /> 

arrow
arrow
    全站熱搜

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