对于最新的稳定版本,请使用 Spring Framework 6.2.4spring-doc.cadn.net.cn

表达式模板

表达式模板允许将文本文本与一个或多个评估块混合。 每个评估块都用前缀和后缀字符分隔,您可以 定义。常见的选择是用作分隔符,如下例所示 显示:#{ }spring-doc.cadn.net.cn

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.这ParserContextinterface 用于影响 解析表达式以支持表达式模板化功能。 的定义TemplateParserContext遵循:spring-doc.cadn.net.cn

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
	}
}