簡體   English   中英

Struts 2:字段的錯誤/拼寫錯誤的getter和setter名稱

[英]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可以訪問帶有aBooleanValueABooleanValue的名稱。 它返回什么都無關緊要,但它應該是一個boolean值。

不建議將此類方法映射到操作,因為您可能會通過OGNL調用或序列化過程遇到不必要的操作調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM