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. MySQL基础语句(查询)

    students表 id class_id name gender score 1 1 小明 M 90 2 1 小红 F 95 3 1 小军 M 88 4 1 小米 F 73 5 2 小白 F 81 ...

  2. PAT A1103—DFS

     Integer Factorization The K−P factorization of a positive integer N is to write N as the sum of the ...

  3. [hdu7076]ZYB's kingdom

    不难发现,操作1可以看作如下操作:对于删去$a_{1},a_{2},...,a_{k}$后的每一个连通块(的点集)$V$,令$\forall x\in V,x$的收益加上$s$(其中$s=\sum_{ ...

  4. [hdu6984]Tree Planting

    构造一个01矩阵,其中格子$(i,j)$​​​​​对应于第$ik+j$​​个​​​的位置(其中$0\le i<\lceil\frac{n}{k}\rceil,0\le j<k$​​​,位置 ...

  5. [atAGC029F]Construction of a tree

    构造一张二分图,左边是$n$个点,右边是$n-1$个集合,按照点属于集合连边 定义一组匹配的意义,即说明该点的父亲在该集合中选择 利用dinic求出二分图的最大匹配,若不为$n-1$则无解,否则考虑如 ...

  6. 【Java面试题】-- Java基本类型

    Java基本类型 2019-11-03  19:03:48  by冲冲 1.两个float型相减丢失精度,如何解决? 使用BigDemical装饰器模式 public class Test { pub ...

  7. mybatis避免sql的like注入

    <select id="NotInByEvalQuestion" resultType="com.rm.eval.entity.EvalQnQuestion&quo ...

  8. 基于nexus私服配置项目pom.xml和maven settings.xml文件

    备注:搭建nexus私服请参考上一篇文章基于Docker搭建Maven私服Nexus,Nexus详解 一:将jar发送到nexus私服务器 1.pom.xml文件添加配置 pom.xml文件中的这个版 ...

  9. java番外茶余饭后闲聊

    java番外茶余饭后闲聊 **本人博客网站 **IT小神 www.itxiaoshen.com 今天聊点题外话没事时可以作为平时沟通交流的谈资,接下来一起简单了解下个人知晓对Java界开发产生深远影响 ...

  10. 【R shiny】一些应用记录

    目录 DT和downloadButton应用 downloadButton 中验证结果输出 添加进度条 如何确保仅在使用Shiny按下操作按钮时才触发操作 其他 DT和downloadButton应用 ...