Thymeleaf 教程

Thymeleaf 简介

Thymeleaf 是一个现代服务器端的 Java 模板引擎,适用于网络和独立环境,能够处理 HTML、XML、JavaScript、CSS 甚至纯文本。

Thymeleaf 的主要目标是提供一种优雅且高度可维护的模板创建方式。为了实现这一目标,它建立在自然模板的概念上,将其逻辑注入模板文件中,而不影响模板作为设计原型使用。这改善了设计的沟通,在设计和开发团队之间架起了桥梁。

Thymeleaf 的设计从一开始就考虑到了网络标准 —— 特别是HTML5 —— 如果你有这方面的需要,你可以创建完全有效的模板。

自然模板

用 Thymeleaf 编写的 HTML 模板仍然像 HTML 一样看起来和工作,让在你的应用程序中运行的实际模板作为有用的设计工件继续工作。例如:

<table>
  <thead>
    <tr>
      <th th:text="#{msgs.headers.name}">Name</th>
      <th th:text="#{msgs.headers.price}">Price</th>
    </tr>
  </thead>
  <tbody>
    <tr th:each="prod: ${allProducts}">
      <td th:text="${prod.name}">Oranges</td>
      <td th:text="${#numbers.formatDecimal(prod.price, 1, 2)}">0.99</td>
    </tr>
  </tbody>
</table>

上面这段模板代码,完全可以直接嵌入到 HTML 文件中,不需要服务端支持,直接在浏览器中运行。这样做非常方便前后端分离开发时,前段人员专注调整页面的样式和展现,而不用依赖后端服务。

丰富的集成

Thymeleaf 提供了非常多的集成方式,允许你通过 Eclipse、IntelliJ IDEA、Spring、Play,甚至是即将推出的 Java EE8 模型视图控制器 API 来集成该模板引擎。你可以使用您最喜欢的 web 开发框架,用您最喜爱的开发工具编写 Thymeleaf。

发展历史

Thymeleaf 3.0.15 — 2022年1月31日

这是一个强烈建议的安全更新,其中包含一些错误修复和功能更改。

安全改进:

  • 修复了由于缓存导致的不一致的受限变量访问检查。

  • 改进了对受限表达式执行场景的检测。

  • 改进了对直接请求输入中视图名称的受限使用的检测。

Thymeleaf 3.0.14 — 2021年12月8日

这是一个强烈建议的安全更新,其中包含一些错误修复和功能更改。

安全改进:

  • 修复了由于缓存导致的不一致的受限变量访问检查。

  • 改进了对受限表达式执行场景的检测。

  • 改进了对直接请求输入中视图名称的受限使用的检测。

Thymeleaf 3.0.13 — 2021年11月29日

这是一个强烈建议的安全更新,其中包含一些错误修复和功能更改。

安全改进:

  • 修复 CVE-2021-43466:模板注入中的特定场景可能导致远程代码执行。

修复的问题:

  • 修复了在受限模式检查期间中断表单处理的请求参数的不正确双反转义。

  • 修复了 SpringStandardDialect 不允许使用自定义 IStandardConversionService 的问题。

Thymeleaf 3.0.12 — 2020年12月21日

这是一个强烈建议的安全更新,其中包含一些错误修复和功能更改。

安全改进:

  • 对于基于 OGNL 和 SpringEL 的场景,避免了在受限表达式求值模式下实例化新对象和调用静态类。

  • Spring 的用户:当视图名称包含在 URL 路径或查询参数中时,避免将视图名称作为片段表达式执行。

修复的问题:

  • 修复了#numbers.format*(…) 表达式实用程序方法,在 NumberFormat 执行此操作的 JDK 版本中,不使用正确的数字符号为使用数字符号的语言环境(例如波斯语)生成数字。

  • 修复了自 JDK11 开始用于编译项目以来,没有为 JavaDoc 生成包列表的问题。

  • Spring的用户:修复了 ThymeleafViewResolver 在重定向到动态构建的URL时的内存泄漏。

功能更改:

  • Spring 5.x的用户:将 encode() 方法添加到 #mvc.url(…) 表达式实用程序方法中。

  • Spring 5.x和Spring WebFlow的用户:在API更改后,将WebFlow支持调整为Spring WebFlow 2.5(现在需要WebFlow 2.5.0+)。

依赖关系更新:

  • OGNL 更新为 3.1.26。

  • Jackson 更新为 2.11.3。

Thymeleaf 3.0.11 — 2018年10月29日

这是一个维护版本,对 3.0.10 中引入的几个问题进行了一些小的错误修复。这些问题影响:

  • JPMS(Java平台模块系统)的用户:一些Thymeleaf模块声明了无效的模块名称。

  • Spring WebFlux的用户。fn (Spring WebFlux的函数端):在呈现使用SpringStandard方言的模板时抛出了一个异常。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号