Struts 2:字段的错误/拼写错误的getter和setter名称

我在Struts 2 modelbean中声明了一个布尔变量isBooleanValue,我可以通过在jsp中使用这个modelbean.aBooleanValue来查看该值。

getter看起来像这样

 public boolean isABooleanValue(){ return isABooleanValue; } 

setter看起来像这样

 public void setABooleanValue(boolean isABooleanValue){ this.isABooleanValue=isABooleanValue; } 

Jsp代码

任何人都可以解释如何从值栈中访问不正确的变量名称。

编辑

在JSP中使用属性基于指定的Getter方法。 modelbean.aBooleanValue调用模型Bean中定义的isABooleanValue()方法,因此不依赖于私有字段名称。

类似的问题

更新: – 虽然这似乎适用于旧版本的OGNL,但与Struts2捆绑在一起的OGNL 3.0.11版(OgnlRuntime)可能会导致当getter和setter字段名称不相同时显示空白值。

如上所述,Aleksandr M变量名称具有private修饰符。 它隐藏了Struts OGNL的变量。 当OGNL正在评估表达式时,它总是在寻找可用于名称的对象访问器。 其中它使用一个更适合获得被评估密钥的值。

如果变量名具有public访问者,则使用此变量的名称。 如果它是一个方法访问器,那么它会从methd名称计算一个名称。

例如,如果你有一个方法

 public boolean isABooleanValue(){ return isABooleanValue; } 

OGNL可以访问带有aBooleanValueABooleanValue的名称。 它返回什么并不重要但它应该是一个boolean值。

不建议将此类方法映射到操作,因为您可能通过OGNL调用或序列化期间遇到不必要的操作调用。