1.3 方言:标准方言

Thymeleaf是一种极其容易扩展的模板引擎(实际上,它可以被称为模板引擎框架)。它允许你定义和配置如何处理你的模板,使其在细节上达到恰当的水平。

将一些逻辑应用到标记物(一个标签、一些文本、一段注释,或者仅仅是一个占位符,如果模板没有标记)上的物体称为处理器。一套处理器——再加上一些另外的东西,通常就构成了方言。开箱即用,Thymeleaf的核心库提供了一种方言,称之为标准方言。对于大多数用户,标准方言应该就足够了。

  1. 注意:方言实际上可以没有处理器,完全由其它东西构成。但是,处理器绝对是最常见的使用案例。

此教程论述了标准方言。你接下来学习的每一个属性和语法特性都由此方言定义,即使没有明确指出。

当然,如果用户想要定义自己的处理逻辑,同时利用库的高级特性,他们可以创建自己的方言(甚至可以扩展标准方言)。Thymeleaf也可以配置为同时使用多种方言。

  1. 官方的thymeleaf-spring3thymeleaf-spring4整合包都定义了一种称为“SpringStandard Dialect”的方言。
  2. 此种方言与标准方言基本相同,但是为了提高Spring框架里一些特性的易用性而进行了些许调整(比如,使用Spring表达式语言或者SpringEL,代替OGNL)。
  3. 所以,如果你是一名Spring MVC用户,你并非在浪费时间,你在这儿学到的东西基本上都能用在你的Spring应用里面。

标准方言的大多数处理器是属性处理器。这甚至允许浏览器在模版文件被处理之前,正确地显示HTML模版文件。因为它们将会简单地忽略额外的属性。比如,当JSP使用标签库时,它可以包含一段代码,而不是直接被浏览器展示,比如:

  1. <form:inputText name="userName" value="${user.name}" />

······Thymeleaf标准方言允许我们实现相同的功能:

  1. <input type="text" name="userName" value="James Carrot" th:value="${user.name}" />

这不仅仅会被浏览器正确地显示,而且还允许我们在里面指定一个值属性(在这里是“James Carrot”)。当在浏览器里静态地打开时,会显示James Carrot。而在处理模版时,James Carrot会被${user.name}的值取代。

这有助于你的设计师和开发者在相同的模版文件上工作,减少了从静态原型转换到可用的模版文件的麻烦。这种能力是一个特性,称之为Natural Templating