繁体   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