Spring 表达式 (SpEL) - Elvis 运算符:无法从整数转换为布尔错误

Spring expression (SpEL) - Elvis operator : cannot convert from Integer to Boolean error

我正在使用 Spring 表达式版本 4.3。2.RELEASE 似乎我们不能将 Elvis 运算符用于除 String 和 Boolean 之外的任何其他类型。

例如,下面会抛出一个错误: 字段 ?: 2 > 0

我们可以解决这个问题吗?是 SpEL 的缺陷吗?

谢谢,

塞巴斯蒂安

Elvis 运算符是shorthand 三元运算符的表示法,用于可空性 检查。

它的语法是:

someField?:somevalue

其中,someField 可以是任何类型。上面的表达式将 return someField (e.g. Integer) 的值,如果它不是 null,否则它将 return someValue。 someValue 必须与 someField (Integer).

类型相同

因此,这不是 SPel 的限制。就是operator的具体用法。

在您的示例中,field 是一个整数,因此解析值也必须是整数类型。但是,您所做的 2>0 解析为布尔类型,这在这种情况下无效。

你能做的就是(field?: 2) > 0,如果这是你想要实现的。

我希望,它澄清了。

这似乎是运算符优先级问题。也许你的表情应该是(field ?: 2)>0

希望对您有所帮助。