Spring Boot(四):Thymeleaf 模板引擎 使用详解以及Thymeleaf相比freemarker和velocity对比

本文深入探讨Spring Boot推荐使用Thymeleaf的原因,Thymeleaf的模板语法保持文档结构有效,与Freemarker和Velocity的对比,以及Thymeleaf的URL、条件判断、循环等常用功能。Thymeleaf支持静态和动态页面展示,易于美工和程序员协作,且与SpringMVC集成良好。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot 推荐使用Thymeleaf 来代替JSP,那么Spring为什么会推荐使用Thymeleaf呢?

 Thymeleaf使用了自然的模板技术,意味着Thymeleaf的模板语法并不会破坏文档结构,模板依旧是有效的XML文档,

Thymeleaf相比freemarker和velocity:

Thymeleaf会在运行期替换掉静态值,freemaker和velocity则是连续的文本处理器;

三者格式相比: velocity  :   <p> $message <p>

                          FreeMarker  :  <p>  ${message}  <p>

                          Thymeleaf  :   <p th:text = "${message}">Hello!!<p>

 

由于Thymeleaf使用了XML DOM 解析器,因此它并不适合处理大规模的xml文件。

Thymeleaf --URL :              

<a  th:href = "@{url}">text</a>

Thymeleaf --条件求值 :

  <a  th : href = “@{url}“ th:unless = ${session.user} != null}>login</a>

Thymeleaf --for循环:


<tr th:each="prod:${prods}">
    <td th:text="${prod.name}">Name</td>
    <td th:text="${prod.price}">2.14</td>
    <td th:text="${prod.instock}?#{true}:#{false}">yes</td>
</tr>

官方讲解Thymeleaf的特点

  • 1.Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 Thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。
  • 2.Thymeleaf 开箱即用的特性。它提供标准和 Spring 标准两种方言,可以直接套用模板实现 JSTL、 OGNL表达式效果,避免每天套模板、改 Jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
  • 3.Thymeleaf 提供 Spring 标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

 

标准表达式语法

它们分为四类:

  • 1.变量表达式
  • 2.选择或星号表达式
  • 3.文字国际化表达式
  • 4.URL 表达式

变量表达式

变量表达式即 OGNL 表达式或 Spring EL 表达式(在 Spring 术语中也叫 model attributes)。如下所示:
${session.user.name}

它们将以HTML标签的一个属性来表示:

<span th:text="${book.author.name}">  
<li th:each="book : ${books}">  

选择(星号)表达式

选择表达式很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行,如下:
*{customer.name}

被指定的 object 由 th:object 属性定义:

<div th:objec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值