字面表达式

SpEL 支持以下类型的字面量表达式。spring-doc.cadn.net.cn

字符串

字符串可以用单引号(')或双引号(")作为分隔符。要在用单引号括起的字符串字面量中包含单引号,请使用两个相邻的单引号字符。类似地,要在用双引号括起的字符串字面量中包含双引号,请使用两个相邻的双引号字符。spring-doc.cadn.net.cn

数字

数字支持使用负号、指数表示法和小数点。spring-doc.cadn.net.cn

布尔

truefalsespring-doc.cadn.net.cn

空值

nullspring-doc.cadn.net.cn

由于Spring表达式语言的设计和实现,字面数值在内部始终以正数形式存储。spring-doc.cadn.net.cn

例如,-2 在内部存储为一个正数 2,然后在求表达式的值时被取反(通过计算 0 - 2 的值得到)。spring-doc.cadn.net.cn

这意味着无法在Java中表示等于该数字类型最小值的负文字数。例如,Java中int支持的最小值是Integer.MIN_VALUE,其值为-2147483648。但是,如果你在SpEL表达式中包含-2147483648,将会抛出一个异常,提示你无法将值2147483648解析为int(因为它超出了Integer.MAX_VALUE的值,即2147483647)。spring-doc.cadn.net.cn

如果需要在SpEL表达式中使用特定数字类型的最小值,可以引用相应包装类型的MIN_VALUE常量(例如Integer.MIN_VALUELong.MIN_VALUE等),或计算出该最小值。例如,要使用整数的最小值:spring-doc.cadn.net.cn

以下列表显示了字面量的简单用法。通常,它们不会像这样单独使用,而是作为更复杂表达式的一部分——例如,在逻辑比较运算符的一边使用字面量,或者作为方法的参数。spring-doc.cadn.net.cn

ExpressionParser parser = new SpelExpressionParser();

// evaluates to "Hello World"
String helloWorld = (String) parser.parseExpression("'Hello World'").getValue();

// evaluates to "Tony's Pizza"
String pizzaParlor = (String) parser.parseExpression("'Tony''s Pizza'").getValue();

double avogadrosNumber = (Double) parser.parseExpression("6.0221415E+23").getValue();

// evaluates to 2147483647
int maxValue = (Integer) parser.parseExpression("0x7FFFFFFF").getValue();

boolean trueValue = (Boolean) parser.parseExpression("true").getValue();

Object nullValue = parser.parseExpression("null").getValue();
val parser = SpelExpressionParser()

// evaluates to "Hello World"
val helloWorld = parser.parseExpression("'Hello World'").value as String

// evaluates to "Tony's Pizza"
val pizzaParlor = parser.parseExpression("'Tony''s Pizza'").value as String

val avogadrosNumber = parser.parseExpression("6.0221415E+23").value as Double

// evaluates to 2147483647
val maxValue = parser.parseExpression("0x7FFFFFFF").value as Int

val trueValue = parser.parseExpression("true").value as Boolean

val nullValue = parser.parseExpression("null").value