Spring 表达式语言无法解析 class 上的方法
Spring Expression Language cannot resolve method on class
我正在尝试以编程方式评估用 SpEL 编写的某些表达式。
ExpressionParser expressionParser = new SpelExpressionParser();
Expression expression = expressionParser.parseExpression(annotation.filter());
SimpleEvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
context.setVariable("authorities", authentication.getAuthorities());
return expression.getValue(context, Boolean.class);
如您所见,我添加了一个名为 authorities
的变量。我正在尝试计算此表达式:#authorities.isEmpty()
.
但我遇到了异常:
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method isEmpty() cannot be found on type java.util.ArrayList
at org.springframework.expression.spel.ast.MethodReference.findAccessorForMethod(MethodReference.java:225) ~[spring-expression-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:134) ~[spring-expression-5.1.2.RELEASE.jar:5.1.2.RELEASE]
...
有人知道这个问题的解决方案吗?
SimpleEvaluationContext
不允许任意方法调用。请参阅其 Javadocs。
如果您"trust" SpEL 表达式,请使用
StandardEvaluationContext context = new StandardEvaluationContext();
我正在尝试以编程方式评估用 SpEL 编写的某些表达式。
ExpressionParser expressionParser = new SpelExpressionParser();
Expression expression = expressionParser.parseExpression(annotation.filter());
SimpleEvaluationContext context = SimpleEvaluationContext.forReadOnlyDataBinding().build();
context.setVariable("authorities", authentication.getAuthorities());
return expression.getValue(context, Boolean.class);
如您所见,我添加了一个名为 authorities
的变量。我正在尝试计算此表达式:#authorities.isEmpty()
.
但我遇到了异常:
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1004E: Method call: Method isEmpty() cannot be found on type java.util.ArrayList
at org.springframework.expression.spel.ast.MethodReference.findAccessorForMethod(MethodReference.java:225) ~[spring-expression-5.1.2.RELEASE.jar:5.1.2.RELEASE]
at org.springframework.expression.spel.ast.MethodReference.getValueInternal(MethodReference.java:134) ~[spring-expression-5.1.2.RELEASE.jar:5.1.2.RELEASE]
...
有人知道这个问题的解决方案吗?
SimpleEvaluationContext
不允许任意方法调用。请参阅其 Javadocs。
如果您"trust" SpEL 表达式,请使用
StandardEvaluationContext context = new StandardEvaluationContext();