一、下载Thymeleaf

官方下载地址:https://dl.bintray.com/thymeleaf/downloads/thymeleaf/

我下载的是最新的3.0.11版本

把包里的jar包丢到项目中去:

dist/thymeleaf-3.0.11.RELEASE.jar
dist/thymeleaf-spring5-3.0.11.RELEASE.jar
lib/attoparser-2.0.5.RELEASE.jar
lib/slf4j-api-1.7.25.jar
lib/unbescape-1.1.6.RELEASE.jar

如果是基于maven的项目,在pom.xml中添加如下内容:

基于spring5的配置:

<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>

基于spring4的配置:

<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.11.RELEASE</version>
</dependency>

二、项目中添加对Thymeleaf的支持

修改springmvc的配置文件springMVC-servlet.xml,添加如下内容:

<bean id="templateResolver"
class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/"/>
<property name="suffix" value=".html"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="order" value="1"/>
<property name="templateMode" value="HTML5"/>
<property name="cacheable" value="false"/>
</bean> <bean id="templateEngine"
class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"/>
</bean> <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine"/>
<property name="characterEncoding" value="UTF-8"/>
</bean>

在项目的/WEB-INF/templates/添加对应的模板文件,这个跟上面配置文件的内容是对应的,要在模板文件html标签添加xmlns:th属性:

<html lang="cn" xmlns:th="http://www.thymeleaf.org">

三、Eclipse中安装Thymeleaf的插件

在Eclipse Marketplace中找到Thymeleaf插件,然后直接安装即可

安装完以后,代码提示中就有Thymeleaf标签的提示了。

四、基础语法

1、在模板中引用变量:

  • ${x} 用于返回request作用域里的x值,或者Thymeleaf作用域里的x值
  • ${param.x} 用于返回页面请求参数的x值(有可能会有多值)
  • ${session.x} 用于返回session作用域里的x值
  • ${application.x} 用于返回application作用域里的x值

2、字符串操作:

  • 字符串拼接: +

  • 文字替换: |The name is ${name}|

示例:

<a th:href="@{'edit?topicid=' + ${topic.topicid }}">编辑<a>

或:

<a th:href="@{|edit?topicid=${topic.topicid }|}">编辑<a>

3、链接表达式

@{...}  用来配合link src href使用的语法,对应的标签为 th:link、th:hrefth:src

示例:

<a th:href="@{'edit?topicid=' + ${topic.topicid }}">编辑<a> <!-- 输出结果为:edit?topicid=1 -->

或:

<a th:href="@{edit(topicid=${topic.topicid })}">编辑<a> <!-- 输出结果为:edit?topicid=1 -->

多个参数:

<a th:href="@{edit(topicid=${topic.topicid },index=${index})}">编辑<a> <!-- 输出结果为:edit?topicid=1&index=1 -->

4、if判断

使用th:if表示满足条件,使用th:unless表示不满足条件

示例:

<divth:if="${session.user==null}">
<a href="login">登录</a> <a href="register">注册</a>
</div>
<divth:unless="${session.user==null}">
<span th:text="|欢迎您,${session.user.useralias }|"></span>
</div>

5、循环遍历

使用th:each

示例:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<!-- 不存在则忽略,显示hello null!(可以通过默认值进行设置)-->
<p th:text="'Hello ' + (${name}?:'admin')">3333</p>
<table>
<tr>
<th>ID</th>
<th>NAME</th>
<th>AGE</th>
</tr>
<tr th:each="emp : ${empList}">
<td th:text="${emp.id}">1</td>
<td th:text="${emp.name}">海</td>
<td th:text="${emp.age}">18</td>
</tr>
</table>
</body>
</html>

使用序列的写法:

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<!-- 不存在则忽略,显示hello null!(可以通过默认值进行设置)-->
<p th:text="'Hello ' + (${name}?:'admin')">3333</p>
<table>
<tr>
<th>INDEX</th>
<th>NAME</th>
<th>AGE</th>
</tr>
<tr th:each="emp,stat : ${empList}">
<td th:text="${stat.index+1}">1</td>
<td th:text="${emp.name}">海</td>
<td th:text="${emp.age}">18</td>
</tr>
</table>
</body>
</html>

遍历指定次数:

<div class="pager" th:each="item:${#numbers.sequence(1,10)}">
<div th:text="${item}"></div>
</div>

6、在javascript中访问Model中的变量

使用th:inline标签,然后把变量包在[[...]]或[()]中,我试了一下,[(...)]比较好用

示例:

<script th:inline="javascript">
function func() {
var topicid = [(${param.topicid})];
}
</script>

 7、声明局部变量

使用th:with标签

示例:

        <div class="desc" th:with="no=${stat.index + 1}">
<div class="info" th:text="|${no}楼|">
</div>
</div>

8、格式化输出日期

使用#dates.format

示例:

<div th:text="${#dates.format(topic.createdate,'yyyy-MM-dd HH:mm')}"></div>

或者:

<div>[[${#dates.format(topic.createdate,'yyyy-MM-dd HH:mm')}]]</div>

9、模板的使用

使用th:fragment声明模板,使用th:insert、th:replace或th:include引用模板

模板文件footer.html

<footer th:fragment="copy">
the content of footer
</footer>

fragment的引用

  1. th:insert:保留自己的主标签,保留th:fragment的主标签。
  2. th:replace:不要自己的主标签,保留th:fragment的主标签。
  3. th:include:保留自己的主标签,不要th:fragment的主标签。(官方3.0后不推荐)

模板文件名 :: fragment名称

导入片段:
<div th:insert="footer :: copy"></div> <div th:replace="footer :: copy"></div> <div th:include="footer :: copy"></div> 结果为:
<div>
<footer>
the content of footer
</footer>
</div> <footer>
the content of footer
</footer> <div>
the content of footer
</div>

spring mvc中添加对Thymeleaf的支持的更多相关文章

  1. Spring MVC 中的基于注解的 Controller【转】

    原文地址:http://my.oschina.net/abian/blog/128028 终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 H ...

  2. spring mvc中的文件上传

    使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.x ...

  3. Spring MVC中基于注解的 Controller

         终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响 ...

  4. Spring MVC中各个filter的用法

    转载:http://blog.csdn.net/qyp1314/article/details/42023725 Spring MVC中各个filter的用法 2014-12-19 09:08 105 ...

  5. Spring MVC中@RequestMapping注解使用技巧(转)

    @RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...

  6. Spring MVC 中的基于注解的 Controller(转载)

           终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法 ...

  7. Spring MVC 中使用AOP 进行统一日志管理--注解实现

    1.AOP简介 AOP称为面向切面编程 AOP的基本概念 (1)Aspect(切面):通常是一个类,里面可以定义切入点和通知 (2)JointPoint(连接点):程序执行过程中明确的点,一般是方法的 ...

  8. Spring mvc中@RequestMapping 6个基本用法

    Spring mvc中@RequestMapping 6个基本用法 spring mvc中的@RequestMapping的用法.  1)最基本的,方法级别上应用,例如: Java代码 @Reques ...

  9. Http请求中Content-Type讲解以及在Spring MVC中的应用

    引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值 ...

随机推荐

  1. 创建简易的SpringBoot项目

    创建简易的SpringBoot项目 这两天在学习springboot,菜鸟刚刚知道这个东西,看着springboot项目下那一大堆目录都不知道从何下手,还是静下心来从最简单的创建一个项目入手,这路和大 ...

  2. PCA 从线性变换的角度理解

  3. Pytorch Sampler详解

    关于为什么要用Sampler可以阅读一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系. 本文我们会从源代码的角度了解Sampler. Sampler 首先需要 ...

  4. Bean property ‘mapperHelper’ is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

    spring boot 报错: Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property ...

  5. 201671030123叶虹 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 课程学习目标 掌握软件项目评审会流程:反思总结课程学习内容 一.实验一问题回答 1.实验 ...

  6. python应用-打印各种形状图

    row = int(input('请输入行数: ')) for row in range(1,row): for col in range (1,row+1): print( (col),end='' ...

  7. 数组中有一个数字出现的次数超过数组长度的一半(C、Python)

    C语言 1 /* 2 ----------------------------------- 3 动态分配需要的内存大小 4 输入数组元素的值 5 通过函数调用,传地址对数组排序 6 循环每个元素,当 ...

  8. Fiddler实现篡改接口请求和返回数据

    步骤如下: 点击rules->Automatic Breakpoints,在这个选项下,我们可以看到三个可选项: Before Requests:在请求发出前拦截请求: After Reques ...

  9. HTTP协议通信过程

    1. 了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器 ...

  10. Angular vs React---React-ing to change

    这篇文章的全局观和思路一级棒! The Fairy Tale Cast your mind back to 2010 when users started to demand interactive ...