gpt4 book ai didi

java - 支柱2 : Incorrect/misspelled getter and setter name of a field

转载 作者:行者123 更新时间:2023-12-02 03:40:14 26 4
gpt4 key购买 nike

我已将 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)字段名称。

similar question

更新:-虽然这似乎适用于旧版本的 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 调用或在序列化期间遇到不必要的操作调用。

关于java - 支柱2 : Incorrect/misspelled getter and setter name of a field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36909947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com