Thymeleaf 用法大全

本文详细介绍了Thymeleaf模板引擎的用法,包括快速入门、选择Thymeleaf的原因、特点和核心语法。Thymeleaf支持在浏览器中查看静态效果,并提供动态渲染功能,替代JSP,支持多种方言,简化Web开发中的表达式处理,适用于静态和动态场景。
摘要由CSDN通过智能技术生成

Thymeleaf 用法大全

快速入门

下载官网文档:https://www.thymeleaf.org/ 快速入门哦!可以仿照下面的步骤自己操作。

在这里插入图片描述在这里插入图片描述

为什么选择Thymeleaf

我们知道Spring MVC本身是支持多种视图技术。视图技术不推荐使用 JSP,官方推荐使用一些第三方的模板引擎:ThymeleafFreeMarkerMustacheVelocity等各种模板引擎。
同时还为开发者提供了自定义模板扩展的支持。它可以完全替代 JSP 。使用嵌入式Servlet容器时,请避免使用JSP,
因为使用JSP打包后会存在一些限制,如想使用请参考下一节:《穿越SpringBoot 》 第二章-SpringBoot Web开发 | 第2节- SpringBoot 整合Jsp页面

特点:

动静结合:
Thymeleaf 在 有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。

开箱即用:

它提供标准spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、改jstl、改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。

多方言支持:

Thymeleaf 提供spring标准方言和一个与SpringMVC 完美集成的可选模块,可以快速的实现表单绑定属性编辑器国际化等功能。

Thymeleaf的语法:

编写html模板,渲染模型中的数据把html 的名称空间,改成:xmlns:th=“http://www.thymeleaf.org 会有语法提示,如下图官方文档:

在这里插入图片描述

(一)基本表达式:

在这里插入图片描述

(二)url

Thymeleaf对于URL的处理是通过语法@{…}来处理的。Thymeleaf支持绝对路径URL:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e5hFg5us-1602472096470)(imges/image-20201012095902632.png)]

(三)片段

th:fragment 布局标签,定义一个代码片段,方便其它地方引用

< th:insert >是将内容插入到所属标签的内部作为子标签。
< th:replace >是将内容直接替换所在的标签。
< th:block > 是虚拟标签,不会影响网页结构。
在这里插入图片描述

    <!--
        片段引用的特殊指令:
            th:insert 将内容插入到所属标签的内部作为子标签
            th:replace 将内容直接替换所在的标签
        	<th:block> 这个标签是虚拟的标签,不会影响网页结构
    -->
    <th:block th:insert="~{commons/fragment::pageHeader}"/>

(四) 判断条件 文本替换

使用 th:if、th:text

在这里插入图片描述

(五)迭代

使用 th:each 标签
在这里插入图片描述
lstat称作状态变量,属性有:

index:当前迭代对象的index(从0开始计算)
count: 当前迭代对象的index(从1开始计算)
size:被迭代对象的大小
current:当前迭代变量
even/odd:布尔值,当前循环是否是偶数/奇数(从0开始计算)
first:布尔值,当前循环是否是第一个
last:布尔值,当前循环是否是最后一个
在这里插入图片描述

在这里插入图片描述
也可配合 th:object 和 * {} 表达式,可以简写 ${}
在这里插入图片描述

    <!--
        关于遍历,重复哪个标签,就往那个标签上写指令

        th:each 的值:
            格式1:  项 :  ${集合}
            格式2: 项,状态变量 :  ${集合}
                关于状态变量,还要默认的规则:
                    如果没有定义,其实它也生成了,  项+'Stat'

         配合 th:object 和 *{} 表达式,可以简写 ${}
    -->
    <ul>
        <li th:each="f : ${user.friends}" th:object="${f}">
            <div>
                <span th:text="${f.name}">姓名</span>
                <span th:text="*{lastTime}">时间</span>
            </div>
        </li>
    </ul>

(六)内置对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值