springboot2 使用Thymeleaf

文章介绍了如何在SpringBoot项目中引入Thymeleaf模板引擎,包括设置依赖、放置HTML文件的位置以及基础语法的使用,如变量表达式、选择变量表达式、信息表达式、URL引用、条件判断和循环结构。同时,文章还讲解了Thymeleaf的内置对象及其在表单处理和页面交互中的应用。

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

导入依赖

<!--        引入thymeleaf-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

springboot的版本不同导入的依赖不同,我使用的springboot的版本是2.6.11

把html文件放到templates目录下

Thymeleaf

导入规范

<html lang="zh" xmlns:th="http://www.thymeleaf.org">

简单代码实例

所有的HTML元素都可以被Thymeleaf接管, th: 元素

<div th:text="${msg}"> </div>

    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("msg", "hello world");
        return "index";
    }

显示的效果

Thmeleaf的基础语法

基本数值绑定

1-变量表达式:$ {…}

变量表达式用于访问容器上下文环境中的变量,下面的例子就获取到了msg的数值

<div th:text="${msg}"> </div>
    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("msg", "hello world");
        return "index";
    }

如果想要转义标签使用下方的方式:

<div th:utext="${msg}"> </div>
    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("msg", "<h1>hello world<h1>");
        return "index";
    }
2-选择变量表达式:*{…}

选择变量表达式计算的是选定的对象(th:object属性绑定的对象)

3-信息表达式:#{…}

国际化的信息

4-引入URL

通过@{…}表达式引入URL

5-访问WebContext对象中的属性

Thymeleaf模板通过一些专门的表达式从模板的WebContext获取请求参数,请求,会话和应用程序中的属性,具体如下:

${xxx}将返回存储在Thymeleaf模板上下文中的变量xxx或者request请求域的属性xxx。

${param.xxx}返回一个名为xxx的请求参数值,可能是多个值。

${session.xxx}返回一个名为xxx的HttpSession作用域中的属性。

${application.xxx}将返回一个名为xxx的全局ServletContext上下文作用中的属性。

与EL表达式一样,使用${xxx}获取变量值,使用 ${对象变量名.属性名}获取JavaBean属性值。

6-运算符

Thymeleaf模板表达式中可以使用各种算数运算符和逻辑运算符。

条件判断

1)if和unless

只有在th:if标签成立才会显示标签内容,th:unless只有在条件不成立才显示标签内容。

2)switch语句

Thymeleaf模板也支持多路选择的switch语句结构,默认属性default可用*表示。

循环

Thymeleaf模板使用th:each="obj,iterStat:${objList}"标签进行迭代循环,迭代对象可以是List,Map或者数组等。

循环状态的使用

在th:each标签中可以使用循环状态变量,该变量有如下属性:

1-index:当前迭代对象的索引,从0开始

2-count:当前迭代对象的索引,从1开始

3-size:迭代器对象的大小

4-current当前迭代变量

5-even/odd:布尔值,当前对象是否是偶数/奇数

6-first:当前循环是否是第一个

7-last:当前循环是否是最后一个

<!--        遍历数据-->
        <span th:each="user:${users}" th:text="${user}"> </span>
<!--        遍历数据的行内写法-->
        <span th:each="user:${users}" >[[${user}]]</span>
@GetMapping("/")
    public String index(Model model) {
        model.addAttribute("users", Arrays.asList("张三", "李四", "王五"));
        return "index";
    }

内置对象

在实际Web项目开发中,经常传递列表,日期等数据,所以Thymeleaf模板提供了很多内置对象,通过#直接访问,这些内置对象一般都通过s结尾,如dates,lists,numbers,strings等。

常用属性有以下几种

1-th:action

定义后台控制路径,类似于form标签的action属性

2-th:each

用于集合对象的遍历,功能类似于JSTL标签<for:Each >

3-th:field

常用于表单参数的绑定,通常与th:object一起使用。

4-th:href

用于定义超链接,类似于< a >标签的href属性

5-th:id

用于id的声明,类似于html中的id属性。

6-th:if

用于添加判断,如果为否,标签不显示

7-th:fragment

声明定义该属性的div为模板片段,常用于头文件,尾文件的引入,常与th:include,th:replace一起使用。

8-th:object

用于表单数据对象的绑定,将表单绑定到后台controller的一个JavaBean参数,长于th:field一起使用,进行表单数据的绑定,

9-th:src

用于外部资源的引入,类似script标签的src属性

10-th:text

用于文本显示,将文本内容显示到所在标签的body中。

11-th:value

用于标签赋值,类似于标签的value属性。

12-th:style

用于修改标签的style

13-th:onclick

th:onclick用于修改单击事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值