[英]Struts 2: Incorrect/misspelled getter and setter name of a field
我已經在Struts 2 modelbean中將布爾變量聲明為isABooleanValue
,並且可以通過在jsp中使用此modelbean.aBooleanValue
來查看該值。
吸氣劑看起來像這樣
public boolean isABooleanValue(){
return isABooleanValue;
}
二傳手看起來像這樣
public void setABooleanValue(boolean isABooleanValue){
this.isABooleanValue=isABooleanValue;
}
JSP代碼
<s:property value="modelbean.aBooleanValue" />
任何人都可以解釋如何從值堆棧中訪問不正確的變量名稱。
編輯
解
JSP中的using屬性基於指定的Getter方法。 modelbean.aBooleanValue
調用在您的Model Bean中定義的isABooleanValue()
方法,因此不依賴於私有字段名稱。
更新:-盡管這似乎在OGNL的較早版本中起作用,但是與Struts2捆綁在一起的OGNL 3.0.11版(OgnlRuntime)可能會導致在字段名稱的getter和setter不同時顯示空白值。
如前所述,Aleksandr M的變量名稱具有private
修飾符。 它從Struts OGNL隱藏該變量。 當OGNL評估表達式時,它總是在尋找可用於該名稱的對象訪問器。 其中,它使用一種更適合的方法來獲取被評估密鑰的值。
如果變量名具有public
訪問器,則使用該變量的名稱。 如果它是一個方法訪問器,那么它將根據方法名稱來計算名稱。
例如,如果您有一個方法
public boolean isABooleanValue(){
return isABooleanValue;
}
OGNL可以訪問帶有aBooleanValue
和ABooleanValue
的名稱。 它返回什么都無關緊要,但它應該是一個boolean
值。
不建議將此類方法映射到操作,因為您可能會通過OGNL調用或序列化過程遇到不必要的操作調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.