- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将 boolean 变量声明为 isABooleanValue
在 Struts 2 modelbean 中,我可以使用此 modelbean.aBooleanValue
看到该值在jsp中。
setter/getter 看起来像这样
public boolean isABooleanValue(){
return isABooleanValue;
}
setter 看起来像这样
public void setABooleanValue(boolean isABooleanValue){
this.isABooleanValue=isABooleanValue;
}
Jsp代码
<s:property value="modelbean.aBooleanValue" />
任何人都可以解释如何从值堆栈中访问不正确的变量名称。
编辑
解决方案
在JSP中使用属性是基于指定的Getter方法。 modelbean.aBooleanValue
调用isABooleanValue()
方法在模型 Bean 中定义,因此不依赖于私有(private)字段名称。
更新:-虽然这似乎适用于旧版本的 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 调用或在序列化期间遇到不必要的操作调用。
关于java - 支柱2 : Incorrect/misspelled getter and setter name of a field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909947/
我是一名优秀的程序员,十分优秀!