thymeleaf入门与基础语法(代码片段)

thirtyyu thirtyyu     2023-05-03     173

关键词:

1.简介

  • Thymeleaf是用来开发Web和独立环境项目的现代服务器端Java模板引擎。

  • Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - HTML。可以在直接浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。

  • 借助Spring Framework的模块,可以根据自己的喜好进行自由选择,可插拔功能组件,Thymeleaf是现代HTML5 JVM Web开发的理想选择 - 尽管它可以做的更多。

  • Spring官方支持的服务的渲染模板中,并不包含jsp。而是Thymeleaf和Freemarker等,而Thymeleaf与SpringMVC的视图技术,及SpringBoot的自动化配置集成非常完美,几乎没有任何成本,你只用关注Thymeleaf的语法即可。

2.环境准备

技术图片

点击next

技术图片

next

技术图片

点击next 等待maven导入依赖

技术图片

2.快速开始

2.1

首先准备一个controller

@Controller
public class FirstController 

    @GetMapping("index1")
    public String index1(Model model)
        model.addAttribute("msg", "Hello, Thymeleaf!");
        return "index1";
    

再新建一个html(在resources下的templates下创建),在html命名空间加入下面,会出现语法提示

xmlns:th="http://www.thymeleaf.org" 
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <h1>Success</h1>
    <!--/*@thymesVar id="msg" type="111"*/-->
    <div th:text="$msg"></div>
</body>
</html>

启动项目

技术图片

3 基础语法

3.1变量的使用

先创建个实体类

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

在controller里添加如下

@GetMapping("index2")
    public String index2(Model model)
        User user = new User();
        user.setName("张三");
        user.setAge(18);
        user.setSex("男");
        model.addAttribute("user",user);
        return "index2";
    

新建一个index2.html

<table class="list">
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
        </tr>
        <tr>
            <td th:text="$user.name"></td>
            <td th:text="$user.age"></td>
            <td th:text="$user.sex"></td>
        </tr>
    </table>

在页面获取user数据

技术图片

如果数据量较大需要频繁地使用user,可以提供自定义变量解决:

<tr th:object="$user">
            <td th:text="*name"></td>
            <td th:text="*age"></td>
            <td th:text="*sex"></td>
</tr>

3.2运算

  • 算术运算

    支持的算术运算符:+ - * / %

    <span th:text="$user.age"></span>
    <span th:text="$user.age%2 == 0"></span>
  • 比较运算

    >, <, >= 、<=, 但 >,<不能直接使用,

    要使用别名gt (>), lt (<), ge (>=), le (<=), not (!) , Also eq (==), neq/ne (!=)

  • 条件运算

    三元运算:条件?条件成立的结果:条件不成立的结果

3.3循环

th:each

<table class="list">
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>性别</th>
        </tr>
        <tr th:each="u : $user">
            <td th:text="*u.name"></td>
            <td th:text="*u.age"></td>
            <td th:text="*u.sex"></td>
        </tr>
    </table>
@GetMapping("index2")
    public String index2(Model model)
        List<User> user = new ArrayList<>();
        user.add(new User("张三",18,"男"));
        user.add(new User("李四",19,"男"));
        user.add(new User("王五",18,"女"));
        model.addAttribute("user",user);
        return "index2";
    

运行结果

技术图片

迭代的同时,也可以获取迭代对象的状态

  • index,从0开始的角标
  • size,总元素个数
  • count,元素的个数,从1开始
  • current,当前遍历到的元素
  • even/odd,返回是否为奇偶,boolean值
  • first/last,返回是否为第一或最后,boolean值

<tr th:each="u,stat : $user">
            <td th:text="*u.name"></td>
            <td th:text="*u.age"></td>
            <td th:text="*u.sex"></td>
</tr>

3.4逻辑判断

th:if 或者 th:unless,两者的意思相反

<span th:if="$user.age < 25">年轻人</span>

如果为true,则标签会渲染到页面,否则不会渲染。

3.5switch

<div th:switch="$user.role">
  <p th:case="'teacher'">教师</p>
  <p th:case="'student'">学生</p>
  <p th:case="*">其它</p>
</div>
  • 需要注意的是,一旦有一个th:case成立,其它的则不再判断。与java中的switch是一样的。
  • th:case="*"表示默认,放最后。

3.6内置对象

Thymeleaf中提供了一些内置对象,并且在这些对象中提供了一些方法,方便我们来调用。获取这些对象,需要使用#对象名来引用。

添加日期类型对象

@GetMapping("index3")
    public String index3(Model model)
        model.addAttribute("today", new Date());
        return "index3";
    
    <p>今天是:<span th:text="$#dates.format(today,'yyyy-MM-dd')">2019-12-17</span></p>

技术图片

  • 一些内置对象
对象 作用
#dates 处理java.util.date的工具对象
#calendars 处理java.util.calendar的工具对象
#numbers 用来对数字格式化的方法
#bools 用来判断布尔值的方法
#arrays 用来护理数组的方法
#strings 用来处理字符串的方法
#lists 用来处理List集合的方法
#sets 用来处理set集合的方法
#maps 用来处理map集合的方法

android:kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(代码片段)

...误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-包-控制流-返回与跳转-基础语法(三)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习指南-基本类型-基础语... 查看详情

kotlin快速入门:基础语法类与继承集合(代码片段)

参考书籍:《AtomicKotlin》,全英文,读起来慢,但是写得很详细,没有任何语言基础的也能看懂《第一行代码Android第三版》,第二章,有java基础的看一看就会了Kotlin中文文档,很详细,可以当... 查看详情

kotlin快速入门:基础语法类与继承集合(代码片段)

参考书籍:《AtomicKotlin》,全英文,读起来慢,但是写得很详细,没有任何语言基础的也能看懂《第一行代码Android第三版》,第二章,有java基础的看一看就会了Kotlin中文文档,很详细,可以当... 查看详情

java基础总结之thymeleaf详解(代码片段)

一、Thymeleaf语法1.1变量表达式$…1.2选择变量表达式*…1.3消息表达式#…1.4链接表达式@…1.5片段表达式~…二、基本使用2.1Thymeleaf模板基本配置一、Thymeleaf语法标签在HTML页面上使用Thymeleaf标签,Thymeleaf标签能够动态地替换掉... 查看详情

python基础语法入门(代码片段)

14天学习训练营导师课程:李宁《PythonPygame游戏开发入门与实战》李宁《计算机视觉OpenCVPython项目实战》1李宁《计算机视觉OpenCVPython项目实战》2李宁《计算机视觉OpenCVPython项目实战》3上一节课,我们了解了基础环境如何... 查看详情

python基础语法入门(代码片段)

14天学习训练营导师课程:李宁《PythonPygame游戏开发入门与实战》李宁《计算机视觉OpenCVPython项目实战》1李宁《计算机视觉OpenCVPython项目实战》2李宁《计算机视觉OpenCVPython项目实战》3上一节课,我们了解了基础环境如何... 查看详情

thymeleaf---基础知识(代码片段)

Thymeleaf---基础知识1.Thymeleaf菜鸟教程2.Thymeleaf2.1Thymeleaf简介2.2Thymeleaf的使用2.3Thymeleaf基本语法2.3.1在thymeleaf模板页面引⼊th标签的命名空间2.3.2th:text2.3.3th:inline内联2.3.4th:object和*2.4流程控制2.4.1th:each循环2.4.2分支2.5碎片使用2.5. 查看详情

头歌实验二python入门之基础语法(代码片段)

文章目录>>>第1关:行与缩进任务描述相关知识缩进多行语句编程要求测试说明参考答案>>>第2关:标识符与保留字任务描述相关知识标识符保留字编程要求测试说明参考答案>>>第3关:注释任务描述... 查看详情

带你入门nodejs第一天——node基础语法及使用(代码片段)

带你入门nodejs第一天——node基础语法及使用带你入门nodejs第二天——http模块化npmyarm带你入门nodejs第三天—express路由带你学习nodejs第四天——身份认证及缓存1node概述为什么要学习node.js为什么要学习服务端的开发?通过学习... 查看详情

go语言入门篇-命令与语法(代码片段)

一。命令基础1.gorun:用于运行命令源码文件(如:gorunhelloworld.go)只能接受一个命令源码文件以及若干个库源码文件作为文件参数其内部操作步骤:(1)先编译源码文件再运行先会编译作为参数的源码文件-》编译结果放入临时... 查看详情

常量与变量入门基础(代码片段)

内容声明常量常量应用示例声明变量变量命名规则变量作用范围常量概念常量就是固定不变的量,一旦被定义,它的值就不能再被改变。语法:final数据类型 常量名称[=值](注:[]中括号中的内容是可选项)常量名称通常使用大写... 查看详情

python基础入门与提高(代码片段)

目录:前言:Python快速入门Python环境配置文本编辑器&IDEPython-pip换源介绍基本语法介绍2.1Python注释Python数据类型逻辑二进制数据和文本字符串变量(列表与字典)流程控制函数2.8变量作用域模块3.0输入输出运算... 查看详情

c++基础入门知识整理与总结(代码片段)

C++基础入门知识整理与总结一.C++基础C++关键字命名空间C++输入和输出缺省参数函数重载函数重载的概念extern“C”引用引用的概念引用特性常引用使用场景传值、传引用效率比较引用和指针的区别内联函... 查看详情

c++基础入门知识整理与总结(代码片段)

C++基础入门知识整理与总结一.C++基础C++关键字命名空间C++输入和输出缺省参数函数重载函数重载的概念extern“C”引用引用的概念引用特性常引用使用场景传值、传引用效率比较引用和指针的区别内联函... 查看详情

groovy入门|基础语法(代码片段)

Java的东西Groovy都能用,包括语法和类库publicstaticvoidmain(String[]args)//重要的事情说3遍for(inti=0;i<3;i++)System.out.println("Java的东西Groovy都能用");//再3遍for(iin0..2)println‘Java的东西Groovy都能用‘//又3遍3.timesprintln‘Jav 查看详情

kotlin入门基础语法学习笔记(代码片段)

敲了一天的kotlin基础语法,整理归纳到一个类里面,便于以后忘记的时候复习。/***CreatedbyGGon2017/11/20.*///main函数funmain(args:Array<String>)vartestMain=TestMain()print(testMain.array())classTestMain//单例的写法compani 查看详情

thymeleaf添加语法提示(代码片段)

thymeleaf添加语法提示:xmlns:th="http://www.thymeleaf.org"  查看详情

android:kotlin详细入门学习指南-函数-基础语法(代码片段)

...误,请帮忙指出,持续更新Android:Kotlin详细入门学习指南-函数-基础语法(六)建议先看看前面的文章Android:Kotlin详细入门学习指南-基础语法(一)Android:Kotlin详细入门学习指南-基本类型-基础语法(二)Android:... 查看详情