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)共享一套核心语法,降低学习和使用成本。