|
对于最新稳定版本,请使用 Spring Framework 7.0.6! |
表达式模板
表达式模板允许将字面文本与一个或多个求值块混合使用。
每个求值块由您可自定义的前缀和后缀字符分隔。
常见的选择是使用 #{ } 作为分隔符,如下例所示:
-
Java
-
Kotlin
String randomPhrase = parser.parseExpression(
"random number is #{T(java.lang.Math).random()}",
new TemplateParserContext()).getValue(String.class);
// evaluates to "random number is 0.7038186818312008"
val randomPhrase = parser.parseExpression(
"random number is #{T(java.lang.Math).random()}",
TemplateParserContext()).getValue(String::class.java)
// evaluates to "random number is 0.7038186818312008"
该字符串通过将字面文本 'random number is ' 与 #{ } 分隔符内表达式求值的结果(在本例中,即调用 random() 方法的返回值)进行拼接来完成求值。传递给 parseExpression() 方法的第二个参数类型为 ParserContext。ParserContext 接口用于影响表达式的解析方式,以支持表达式模板功能。
TemplateParserContext 的定义如下:
-
Java
-
Kotlin
public class TemplateParserContext implements ParserContext {
public String getExpressionPrefix() {
return "#{";
}
public String getExpressionSuffix() {
return "}";
}
public boolean isTemplate() {
return true;
}
}
class TemplateParserContext : ParserContext {
override fun getExpressionPrefix(): String {
return "#{"
}
override fun getExpressionSuffix(): String {
return "}"
}
override fun isTemplate(): Boolean {
return true
}
}