【发布时间】:2019-12-21 23:57:50
【问题描述】:
我是 thymeleaf 的新手,经常看到这三个运算符。 *{}${}和#{}有什么区别?
我知道它们用于从 MVC 访问数据,但在什么情况下?
【问题讨论】:
标签: spring-boot spring-mvc thymeleaf
我是 thymeleaf 的新手,经常看到这三个运算符。 *{}${}和#{}有什么区别?
我知道它们用于从 MVC 访问数据,但在什么情况下?
【问题讨论】:
标签: spring-boot spring-mvc thymeleaf
types of expressions Thymeleaf 支持是:
${...} - 变量表达式。这些是标准表达方式。*{...} - 选择变量表达式。这些与变量表达式相同,只是它们与th:object 属性结合使用。例如,如果您有<form th:object="${form}">,则表达式*{field} 解析为${form.field}。这些主要用于在创建表单时使用th:field 属性。#{...} - 消息表达式。这些表达式主要用于外化文本。例如,通过读取消息文件来提供不同语言的文本。@{...} - 链接 URL 表达式。用于生成网址,见standard url syntax。~{...} - 片段表达式。用于指定要包含的片段,请参见
fragment specification syntax。【讨论】:
documentation 提供了非常好的示例,请看一下。
简而言之:
${} 用于变量表达式。变量表达式是 OGNL 表达式——如果你将 Thymeleaf 与 Spring 集成,则为 Spring EL
*{} 用于选择表达式。选择表达式就像变量表达式一样,只是它们将在先前选择的对象上执行。
#{} 用于消息 (i18n) 表达式。用于从外部来源检索特定于语言环境的消息
【讨论】: