1.Thmeleaf的基本语法

大部分的Thmeleaf表达式都直接被设置到HTML节点中,作为HTML节点的一个属性存在,这样同一个模板文件既可以使用浏览器直接打开,也可以放到服务器中用来显示数据,并且在样式上基本不会存在差异。

2.Thmeleaf支持的模板类型

2.1 HTML模板

<input type="text" th:value="angus">

上面这种情况,HTML模式并不会抛出异常,因为Thmeleaf并不会进行严格的认证,但对一些明显的格式错误会抛出异常。如:

<input type="text" th:value="angus"

2.2 XML模板

Thmeleaf在处理xml时只会对文档进行形式上的检查,而不会进行实质型的检查。如xml文件中的节点没有关闭。

2.3 Thmeleaf API

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

2.3.1 处理HTML

按照一定的语法规则将逻辑写入HTML页面,然后再把这些"加工"过的HTML字符串交给thmeleaf去处理,Thmeleaf处理器会处理他们,最后输出真正的,被渲染的html.

2.3.2 变量处理

<input type="text" th:value="${data.name"} />

上面的模板中,th:value属性来展示data对象的name属性。

2.3.3 遍历集合

<table>
<tr th:each="data:${datas}">
<td th:text="${data.name}">Angus</td>
</tr>
</table>

使用th:each属性进行数据遍历,节点变量为data,在td中使用td:text将data的name属性进行输出

3.配置Thmeleaf

在配置文件application.properties文件中配置Thmeleaf

spring.thmeleaf.mode=HTML #模板模式,默认为html5
spring.thmeleaf.prefix=classpath:/templates/ #模板前缀,默认为classpath:/templates/
spring.thmeleaf.suffix=.html #模板后缀
spring.thmeleaf.cache:true #是否打开模板配置,默认为true
spring.thmeleaf.check-template;true #是否处理模板前检查其是否存在,默认为true
spring.thmeleaf.check-template-location:true #是否检查模板位置,默认为true.
spring.thmeleaf.content-type:text/html #默认的content-type值
spring.thmeleaf.enabled:true #是否开启视图解析,默认为true

4.静态资源处理

4.1 引入css

<link rel="stylesheet" type="text/css" th:href="@{/common.css}" /> 

默认位置是/static/

4.2 引入javascript

<script type="text/javascript" src="../js/test.js th:src="@{/js/test.js}"

5.文本处理

在thmeleaf中,外部的文本片段通常被称为message,通常保存在properties文件里面,因此每一个文本信息都有一个key作为标识。

<span th:text="#{page.myText}">This is propertype text.<span>

在配置文件中是如下内容

page.myText=This is config text

获取变量中的属性:

<span th:text="${user[‘parent']['age']}"></span>

获取List中的第一个元素

<span th:text="${users[0].name}'></span>

获取Map中的元素:

<span th:text="${userMap['key1'].name"></span>

获取数组中的元素

<span th:text="${userArr[1].name}"></span>

链接表达式

Thmeleaf的链接表达式

@{......}
<a href="view.html" th:href="@{/user/details(id=${user.id},name=${user.name})}" th:text="${user.name}"></a>
<a href="view.html" th:href="@{/user/{userId}" th:text="${user.name}"></a>

5.themeleaf的内置对象

5.1 #ctx :表示模板引擎上下文对象

5.2 #vars 模板引擎上下文对象

5.3 #locale 在全局上下文中维护的java.util.Locale对象

5.4 #request 表示HttpServletRequest对象

<span th:text="${#request.getAttribute('name')}"></span>
<span th:text="${#session.getAttribute('name2')}"></span>
<span th:text="${#servletContext.getAttribute('name3')}"></span>

5.5 #response 表示HttpServletResponse对象

5.6 #session 表示HttpSession对象

5.7 #servletContext 表示ServletContext对象

6.Themeleaf的内置变量

1.session #session属性

2.param #访问请求参数

3.application

<span th:text="${session.sesData}"></span>
<span th:text="${param.userName"></span>
<span th:text="${reqData}"></span> //request所有属性,都可以直接使用${myAttribute}来访问

7.数字对象

1.整数格式化

formatInteger(num,digits):第一个参数是处理的整数,第二个参数用于设置最少的整数位数。

arrayFormatInteger(num,digits)

listFormatInteger(number,digits)

setFormatInteger(numbers,digits)

8.字符串对象

在模板中使用#strings表示org.thmeleaf.expression.String对象。

<div th:text="#strings.toString(user)"></div>
<div th:text="#strings.length(user)"></div>

非空判断与默认值处理

#strings提供了isEmpty与defaultString方法,用来字符串的非空判断与默认值处理

包含判断

<div th:text="${#strings.inexOf('abcde','z')}"></div>
<div th:text="${#string.substring('abcde',1,3)}"></div>
<div th:text="${#string.substringAfter('abcde','a')}"></div>
<div th:text="${#string.substringBefore('abcde','c')}"></div>
<div th:text="${#string.replace('abcde','c','1')}"></div>

9.日期对象

使用#datas或者#calendars这两个日期对象来处理日期

format(Date date)

formatISO(Date date)

formatISO(Date date,String pattern)

<div th:text="${#datas.format(date)}"></div>
<div th:text="${#datas.formatISO(date)}"></div>
<div th:text="${#datas.format(date,'yyyy-MM-dd HH:mm:ss)}"></div>

  

1.Thmeleaf模板引擎的更多相关文章

  1. Thymeleaf 模板引擎简介

    目录 Thymeleaf 模板引擎 官方文档下载 Hello World 新建应用 后台控制器 前端页面 浏览器访问测试 Thymeleaf 模板引擎1.Thymeleaf 是 Web 和独立环境的现 ...

  2. JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  3. Handlebars 模板引擎之前后端用法

    前言 不知不觉间,居然已经这么久没有写博客了,坚持还真是世界上最难的事情啊. 不过我最近也没闲着,辞工换工.恋爱失恋.深圳北京都经历了一番,这有起有落的生活实在是太刺激了,就如拿着两把菜刀剁洋葱一样, ...

  4. 推荐13款javascript模板引擎

    javaScript 在生成各种页面内容时如果能结合一些模板技术,可以让逻辑和数据之间更加清晰,本文介绍 X 款 JavaScript 的模板引擎.(排名不分先后顺序) 1. Mustache 基于j ...

  5. JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

    一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...

  6. DotLiquid模板引擎简介

    DotLiquid是一个在.Net Framework上运行的模板引擎,采用Ruby的Liquid语法,这个语法广泛的用在Ruby on rails和Django等网页框架中. DotLiquid相比 ...

  7. doT js 模板引擎【初探】要优雅不要污

    js中拼接html,总是感觉不够优雅,本着要优雅不要污,决定尝试js模板引擎. JavaScript 模板引擎 JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注. ...

  8. 浅谈 Web 中前后端模板引擎的使用

    前言 这篇文章本来不打算写的,实话说楼主对前端模板的认识还处在非常初级的阶段,但是为了整个 源码解读系列 的完整性,在深入 Underscore _.template 方法源码后,觉得还是有必要记下此 ...

  9. JavaScript模板引擎artTemplate.js——结语

    再次首先感谢模板的作者大神,再次放出github的地址:artTemplate性能卓越的js模板引擎 然后感谢博客园的一位前辈,他写的handlebars.js模板引擎教程,对我提供了很大的帮助,也是 ...

随机推荐

  1. Apache Shiro 反序列化漏洞分析

    Shiro550 环境搭建 参考:https://www.cnblogs.com/twosmi1e/p/14279403.html 使用Docker vulhub中的环境 docker cp 将容器内 ...

  2. 问题 C: A+B Problem II

    题目描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the ...

  3. Mui中mui.openWindow()方法具体参数信息(内容来自Mui问题专区)

    mui.openWindow({ url: 'xxx.html', //String类型,要打开的界面的地址 id: 'id', //String类型,要打开的界面的id styles: { //We ...

  4. vite2 + vite.config.js 比较坑的环境变量,vite2模式的使用

    想在vite.config.js 里面判断一下环境,看看是不是开发环境,查了一下官网(https://cn.vitejs.dev/guide/env-and-mode.html),说是 可以使用 im ...

  5. 【备忘】下载Oracle 8u202及之前的商用免付费版本JDK

    访问地址: https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 虽然是商用免付费版本,下载仍需 ...

  6. [cf1479D]Odd Mineral Resource

    先考虑判定是否有解,注意到无解即每一个数都出现偶数次,根据异或的性质,只需要随机$V_{i}$,假设$u$到$v$路径上所有节点构成集合$S$,若$\bigoplus_{x\in S,l\le a_{ ...

  7. Redis | 第4章 Redis中的数据库《Redis设计与实现》

    目录 前言 1. Redis中的数据库 2. 数据库的键空间 3. 键的生成时间与过期时间 4. Redis中的过期键删除策略 5. AOF.RDB和复制功能对过期键的处理 5.1 生成 RDB 文件 ...

  8. PIC16 bootloader之UART bootloader

    了解更多关于bootloader 的C语言实现,请加我Q扣: 1273623966 (验证信息请填 bootloader),欢迎咨询或定制bootloader(在线升级程序). PIC16 bootl ...

  9. javaSE基础复习

    第一天:复习java入门知识,jvm内存,java程序执行流程,数据类型,变量和自动类型转换,运算符... 学习java目的:起初是因为想找工作,拿高薪.后来逐渐在学习java技术的过程中渐渐循喜欢上 ...

  10. Codeforces 571E - Geometric Progressions(数论+阿巴细节题)

    Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉此题思维难度不太大,不过大概是细节多得到了精神污染的地步所以才放到 D1E 的罢((( 首先我们对所有 \(a_i,b_i\ ...