Thymeleaf模板入门(二)

Thymeleaf基本语法

1. 前篇

Thymeleaf模板入门(一)

2. 常用标签

th:标签 说明
th:insert 页面片段包含
th:replace 页面片段包含
th:each 元素遍历
th:if 条件判断,条件成立时显示th标签内容
th:unless 条件判断,条件不满足时显示
th:switch 条件判断,进行选择时判断
th:case th:switch分支的条件判断
th:object 用于替换对象
th:with 用于定义局部变量
th:attr 通用属性修改
th:attrprepend 通用属性修改,将计算结果追加前缀到现有属性值
th:attrappend 通用属性修改,将计算结果追加后缀到现有属性值
th:value 属性值修改,指定标签属性值
th:href 用于设定链接地址
th:src 用于设定链接地址
th:text 用于指定标签显示的文本内容
th:utext 用于指定标签显示的文本内容,对特殊标签不转义
th:fragment 声明片段
th:remove 移除片段

3. 主要标准表达式

语法 说明
${…} 变量表达式
*{…} 选择变量表达式
#{…} 消息表达式
@{…} 链接URL表达式
~{…} 片段表达式

3.1 变量表达式

<p th:text="${title}">变量表达式</p>

${…}主要获取上下文中变量值,若程序未启动或者上下文不存在时显示标签内的内容。

内置对象:

  • #ctx:上下文对象
  • #vars:上下文变量
  • #locale:上下文区域设置
  • #request:(仅限Web Context)HttpServletRequest对象
  • #response:(仅限Web Context)HttpServletServlet对象
  • #session:(仅限Web Context)HttpSession对象
  • #servletContext:(仅限Web Context)ServletContext对象

例:获取国家信息

<span th:text="${#locale.country}">CN</span>

3.2 选择变量表达式

选择变量表达式一般用于从被选定对象而不是上下文中获取属性值,若没有选定对象,则和变量表达式一样

<h2>选择变量表达式</h2>
<dev th:object="${user}">
    <span th:text="*{name}"></span>
    <span th:text="*{age}"></span>
</dev>

3.3 消息表达式

消息表达式主要用于Thymeleaf模板从消息源中提取消息内容实现国际化

<title th:text="#{user.title}"></title>

3.4 链接URL表达式

一般用于页面跳转和资源引入

<a th:href="@{http://infinxkj.top}">让大古编程</a>

3.5 片段表达式

将标记片段移动到模板中的方法

<div th:insert="~{demo::hello}">让大古编程</div>

模板demo.html

<template xmlns:th="http://www.thymeleaf.org">
    <div th:fragment="hello">
        <a th:href="@{http://infinxkj.top}">让大古编程</a>
    </div>
</template>

3.6

hello.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
<h1>这是一个测试页面</h1>
<h3>变量表达式</h3>
<p th:text="${user.name}">变量表达式</p>
<h3>选择变量表达式</h3>
<dev th:object="${user}">
    <span th:text="*{name}">姓名</span>
    <span th:text="*{age}">年龄</span>
</dev>
<h3>消息表达式</h3>
<h3>链接URL表达式</h3>
<a th:href="@{http://infinxkj.top}">让大古编程</a>
<h3>片段表达式</h3>
<div th:insert="~{demo::hello}">让大古编程</div>
</body>
</html>

demo.html

<template xmlns:th="http://www.thymeleaf.org">
    <div th:fragment="hello">
        <a th:href="@{http://infinxkj.top}">让大古编程</a>
    </div>
</template>

DemoController.java

package top.infinxkj.thymeleaf.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import top.infinxkj.thymeleaf.pojo.User;

@Controller
public class DemoController {
    @GetMapping
    public String hello(Model model){
        User user = new User();
        user.setName("张三");
        user.setAge(28);
        model.addAttribute("user",user);
        return "hello";
    }
}

User.java

package top.infinxkj.thymeleaf.pojo;

public class User {
    public String name;
    public int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

启动器

package top.infinxkj.thymeleaf;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class,args);
    }
}

效果

Thymeleaf模板入门(二)

上一篇:防抖节流函数


下一篇:Java并发编程之 浅谈ThreadLocal