Thymeleaf入门与基础语法

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集合的方法

原文地址:https://www.cnblogs.com/thirtyYu/p/12056904.html

时间: 2024-10-05 05:50:12

Thymeleaf入门与基础语法的相关文章

python入门:基础语法

 交互式解释器: 使用python自带程序IDLE,启动后可看到类似下面提示符: 表达式: 由一个或者几个数字或者变量和运算符组合成的一行代码,通常返回一个值. 运算符:  运算符用于执行程序代码运算,会针对一个以上 操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是"+" 算术运算符(+.-.*./.%.**.//) 比较运算符(==.!=.>.<.>=.<=) 赋值运算符(=.+=.-=.*=./+.%=.**=.//=) 逻辑运算符(not

JavaSE入门学习7:Java基础语法之语句(下)

继续接着Java基础语法来:JavaSE入门学习5:Java基础语法(一)和JavaSE入门学习6:Java基础语法(二). 语句 Java经常使用的3种循环:while.do...while,for. (5)Java循环语句之while 语法: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 运行

小白入门必学Python基础语法

最近开发中用到Python比较多,所以将Python的基础语法总结出来供Python入门者学习. Unicode Unicode(统一码.万国码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的要求.Unicode规定所有的字符和符号最少由16位来表示(2个字节),即:2**16=65536 UTF-8 UTF-8(8-bi

JavaSE入门学习6:Java基础语法之运算符和语句(上)

继续接着上篇:JavaSE入门学习5:Java基础语法(一)来看Java的基础语法. 五运算符 运算符是一种"功能"符号,用以通知Java进行相关的运算.比方.我们须要将变量age的值设置为20.这时候就 须要一个"=",告诉程序须要进行赋值操作. Java 语言中经常使用的运算符可分为例如以下几种:算术运算符,赋值运算符,比較运算符,逻辑运算符,条件运符. (1)算术运算符 算术运算符主要用于进行主要的算术运算.如加法.减法.乘法.除法等. Java 中经常使用的

Objective-C基础语法快速入门

Objective-C基础语法快速入门 2010-11-04 16:32 折酷吧 zheku8 字号:T | T 假如我们对面向对象的思维已经C语言都很熟悉的话,对于我们学习Objective-C将会非常有用.假如我们对C语言还不熟悉的话,那我们需要学习一下C语言. AD: 2010年11月编程语言排行榜和2月编程语言排行榜讲的都是Objective-C.Objective-C是Mac软件开发领域最主要的开发语言,假如我们对面向对象的思维已经C语言都很熟悉的话,对于我们学习Objective-C

Spark入门到精通--(第二节)Scala编程详解基础语法

Scala是什么? Scala是以实现scaleable language为初衷设计出来的一门语言.官方中,称它是object-oriented language和functional language的混合式语言. Scala可以和java程序无缝拼接,因为scala文件编译后也是成为.class文件,并且在JVM上运行. Spark是由Scala进行开发的. Scala安装? 这里就讲一下Scala在Centos上进行安装的过程,和安装JDK差不多. 官网下载Scala:http://www

C#入门基础语法知识点总结(.NET开发环境及代码编写规范)

C#基础语法 一..net开发环境的搭建和使用 1.菜单栏 [文件]-->新建项目-->找到我们需要的项目类型 在新建窗口中,我们新建的项目要求可以在这里选择: (1)版本的选择:建议选择4或者4.6 (2)选择开发语言:一般都是C# (3)项目类型:初学阶段一般都用"控制台"程序.仅仅是学习资源. (4)项目的名称.要有意义. (5)位置:项目所有文件的保存位置.建议不要使用中文目录. (6)解决方案名称:默认和项目名称一致. [视图]-->可以显示各种窗口. [调

Java入门 - 语言基础 - 03.基础语法

原文地址:http://www.work100.net/training/java-basic-syntax.html更多教程:光束云 - 免费课程 基础语法 序号 文内章节 视频 1 第一个Java程序 - 2 基本语法 - 3 Java标识符 - 4 Java修饰符 - 5 Java变量 - 6 Java数组 - 7 Java枚举 - 8 Java关键字 - 9 Java注释 - 10 Java空行 - 11 继承 - 12 接口 - 13 Java源程序与编译型运行区别 - 请参照如上章节

C#入门—基础语法

二.C#基础语法 2.1.C#程序结构 1)程序结构 namespace { class { static void Main(string[ ] args) { } } } 2)工程结构 .Sln:解决方案文件 .csproj:项目文件 .cs:类文件 2.2.命名空间及标识符.关键字 1)命名空间 保证唯一标识代码及内容,以“ . ”分层 指定命名空间别名:using 别名 = 命名空间 2)标识符 以字母或下划线开头.由字母数字下划线组成的 3)关键字 2.3.编程规范 个人建议使用大小驼