深色模式
1.3 方言:标准方言
Thymeleaf 是一个极其可扩展的模板引擎(事实上可以称为“模板引擎框架”),允许你以非常精细的粒度定义和定制模板的处理方式。
对标记对象(标签、文本、注释,或者在非标记模板中只是占位符)应用某些逻辑的对象称为处理器(processor)。一组处理器——可能再加上一些额外对象——通常构成一个方言(dialect)。开箱即用的情况下,Thymeleaf 核心库提供了一个名为 Standard Dialect(标准方言) 的方言,对大多数用户来说已经足够。
INFO
注意:方言实际上可以没有处理器,而完全由其他类型的对象组成,但处理器无疑是最常见的用法。
本教程介绍的就是 Standard Dialect。后面各页中你将要学习的所有属性和语法特性,都是由这个方言定义的,即使没有明确说明。
当然,如果用户希望在利用该库高级特性的同时定义自己的处理逻辑,也可以创建自己的方言(甚至可以扩展 Standard Dialect)。Thymeleaf 也可以配置为同时使用多个方言。
INFO
官方的 thymeleaf-spring3 和 thymeleaf-spring4 集成包都定义了一个名为 “SpringStandard Dialect” 的方言,它与 Standard Dialect 基本相同,但做了一些小调整,以便更好地利用 Spring 框架中的某些特性(例如,使用 Spring Expression Language 即 SpringEL 而不是 OGNL)。因此,如果你是 Spring MVC 用户,你并没有在浪费时间,因为你在这里学到的几乎所有内容都将在你的 Spring 应用中派上用场。
Standard Dialect 的大多数处理器都是属性处理器(attribute processors)。这使得浏览器在模板被处理之前就能正确显示 HTML 模板文件,因为它们会简单地忽略这些额外的属性。例如,使用标签库的 JSP 可能包含一段浏览器无法直接显示的代码,比如:
html
<form:inputText name="userName" value="${user.name}" />而 Thymeleaf Standard Dialect 允许我们用下面的方式实现相同的功能:
html
<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />这不仅能被浏览器正确显示,还允许我们(可选地)在其中指定一个 value 属性(在本例中是 “James Carrot”),当原型在浏览器中被静态打开时会显示这个值,而在模板处理期间,这个值会被 ${user.name} 表达式求值的结果所替换。
这有助于设计师和开发人员在同一个模板文件上工作,并减少将静态原型转换为可工作模板文件所需的工作量。实现这种能力的特性称为 Natural Templating(自然模板)。
