1. 程式人生 > >關於struts2 中action 屬性沒有 set 方法 依然會注入值的問題(解決)

關於struts2 中action 屬性沒有 set 方法 依然會注入值的問題(解決)

以前經常看到網上和書上說,struts2 action中的屬性中要寫相對應的setXXx,getXXx方法才能接收到網頁中傳來的引數!
無意中發現,屬性沒有寫set get 方法,依然會注入值和取到值.
甚是不解,求助於網上依然沒有得到解決!
花了點時間看了下原始碼!
發現:
struts2 引數攔載器在注入值的時候,有兩種機制,(呼叫ognl)
 
這是OgnlRuntime 類中一段原始碼 hasSetMethod( context, target, targetClass, name ) || hasField( context, target, targetClass, name );
 

他會先檢視你的action 中有沒有對應的方法,如果發現無此方法,他會利用第二種方法直接給屬性覆值,而無需對應的set方法!(當然都是通過反射機制實現的)

from:

東avaj東的部落格
http://blog.sina.com.cn/u/1866397122