如何处理"Property or field cannot be found on object in SpEL"?

How to handle "Property or field cannot be found on object in SpEL"?

如何在 SpEL 中处理 Property or field <foo> cannot be found on object of type <bar>? 例如如果数据上没有 placeId 属性 那么它不应该给我上面的错误和 return differentValue.

"${@block?.value?.data?.placeId ?: 'differentValue'}"

这是不正确的。 SpEL 只是另一种 JVM 语言。它不是像 JavaScript 这样的非类型化语言。那么,如果您的 Java class 没有 属性 会怎样?右:Property or field <foo> cannot be found on object of type <bar>.

因此表达式中的逻辑不能依赖于一些非Java反射逻辑。

你肯定需要像 instanceof 这样的东西,但你可能不需要转换就可以访问现有属性。