Skip to content

1.2 Thymeleaf可以处理哪些类型的模板? ​

Thymeleaf 开箱即用,支持处理六种类型的模板,每种类型对应一种模板模式(Template Mode):

  • HTML
  • XML
  • TEXT
  • JAVASCRIPT
  • CSS
  • RAW

这些模式分为三类:两种标记型模板模式(HTML 和 XML)、三种文本型模板模式(TEXT、JAVASCRIPT 和 CSS),以及一种无操作模板模式(RAW)。


HTML 模板模式 ​

HTML 模式支持处理任意类型的 HTML 输入,包括 HTML5、HTML 4 和 XHTML。 该模式下不执行任何验证或格式合法性检查,会尽可能保留模板的代码/结构并体现在输出结果中。


XML 模板模式 ​

XML 模式支持处理 XML 输入,但要求输入的代码必须格式合法——不允许存在未闭合的标签、未加引号的属性等。若检测到格式不合法的情况,解析器会直接抛出异常。 注意:该模式仅检查格式合法性,不会针对 DTD 或 XML Schema 执行验证。


TEXT 模板模式 ​

TEXT 模式专为非标记型模板设计,支持使用一套特殊语法。这类模板的典型场景包括文本邮件、模板化文档等。 需注意:HTML 或 XML 模板也可强制以 TEXT 模式处理,此时它们不会被当作标记语言解析,所有标签、DOCTYPE、注释等内容都会被视为纯文本。


JAVASCRIPT 模板模式 ​

JAVASCRIPT 模式允许在 Thymeleaf 应用中处理 JavaScript 文件。 这意味着你可以像在 HTML 文件中那样,在 JS 文件中使用模型数据,同时还能获得 JS 专属的集成能力(如专用的字符转义、原生脚本支持)。 JAVASCRIPT 模式归属于文本型模式,因此使用与 TEXT 模式完全相同的特殊处理语法。


CSS 模板模式 ​

CSS 模式允许在 Thymeleaf 应用中处理 CSS 文件。 与 JAVASCRIPT 模式类似,CSS 模式也属于文本型模式,同样复用 TEXT 模式的特殊处理语法。


RAW 模板模式 ​

RAW 模式完全不处理模板内容,其设计目的是将未经过任何修改的资源(文件、URL 响应等)插入到正在处理的模板中。 例如,你可以将外部不受控的 HTML 格式资源嵌入应用模板,且无需担心这些资源中可能包含的 Thymeleaf 代码被执行,安全性得到保障。

核心概念解释 ​

  1. 标记型 vs 文本型模式:
    • 标记型(HTML/XML)会解析标签、属性等结构化内容,关注语法合法性;
    • 文本型(TEXT/JAVASCRIPT/CSS)将内容视为纯文本流,通过专属语法注入动态数据。
  2. RAW 模式的核心价值:隔离外部不可信资源,防止其中的 Thymeleaf 代码被意外执行,是保障模板安全的重要机制。
  3. 模式复用逻辑:JAVASCRIPT/CSS 模式复用 TEXT 模式的语法,无需额外学习新语法,降低使用成本。

总结 ​

  1. Thymeleaf 的 6 种模板模式覆盖了从结构化标记(HTML/XML)到纯文本(TEXT/JS/CSS)再到无处理(RAW)的全场景需求。
  2. HTML 模式宽松兼容,XML 模式严格检查格式,TEXT/JS/CSS 模式适配非标记文本的动态处理,RAW 模式保障外部资源嵌入安全。
  3. 不同模式的语法/解析规则不同,但文本型模式(TEXT/JS/CSS)共享一套核心语法,降低学习和使用成本。