默认情况下,每个模板都不会启用解耦逻辑。相反,配置的模板解析器(ITemplateResolver 的实现)将需要特别的将他们解析的模板标记为使用解耦逻辑。
除了 StringTemplateResolver(它不允许解耦逻辑),ITemplateResolver 的所有其他开箱即用的实现将提供一个叫做 useDecoupledLogic 的标志,该标志将标记由该解析器解析的所有模板,使其可能将其全部或部分逻辑存在于单独的资源中:
final ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext)。 ... templateResolver.setUseDecoupledLogic(true)。
启用模板解耦逻辑,并不是必需的。当启用解耦逻辑时,它意味着模板引擎将寻找包含解耦逻辑的资源(即 .th.xml 文件),如果存在的话,将其与原始模板进行解析和合并。如果解耦逻辑资源不存在,则不会发生错误。
另外,在同一个模板中,我们可以混合耦合和解耦逻辑,例如在原始模板文件中添加一些 Thymeleaf 属性,但将其他属性留给单独的解耦逻辑文件。这方面最常见的情况是使用新的(v3.0版)th:ref 属性。