我正在使用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
我的问题是因为spring正在寻找isIsVerified方法而不是isVerified方法?如果不是,这可能是失败的原因吗?
最佳答案
您没有显示您的表达式,但是SpEL在访问bean属性时使用JavaBean语义。它对所引用bean的内部一无所知。当遇到属性请求时...
"x.foo"
它将尝试找到getter
getFoo()
(任何返回类型),如果找不到,则返回boolean的情况下将查找isFoo()
。我怀疑您正在尝试使用
x.isVerified
。没有这样的吸气剂。您需要使用x.verified
,或者可以调用方法本身x.isVerified()
。