我正在使用spring-expression解析类(存在于jar中)中的值。读取此值后,将其设置在目标类中[spring-expression的典型使用情况]。但是,可以解析jar中类中所有字段的值,布尔值除外。在源类中,它的声明如下:

boolean isVerified;

//getter
public isVerified() {
  return isVerfied;
}


Spring表达式代码读取此值:

Expression sourceExp = parser.parseExpression(<source field string>);
sourceExp.getValue(sourceContext);


这失败了。消息是
找不到属性isVerified

我的问题是因为s​​pring正在寻找isIsVerified方法而不是isVerified方法?如果不是,这可能是失败的原因吗?

最佳答案

您没有显示您的表达式,但是SpEL在访问bean属性时使用JavaBean语义。它对所引用bean的内部一无所知。当遇到属性请求时...

"x.foo"


它将尝试找到getter getFoo()(任何返回类型),如果找不到,则返回boolean的情况下将查找isFoo()

我怀疑您正在尝试使用x.isVerified。没有这样的吸气剂。您需要使用x.verified,或者可以调用方法本身x.isVerified()

09-10 23:00