Thymeleaf 在SpingMVC中的使用

/ JavaWeb / 422浏览

准备工作

首先需要在工程中,增加Thymeleaf的Maven依赖。
其中第一个依赖就是thymeleaf引擎了,而第二个依赖,是对不严谨的HTML代码进行忽略的依赖,不加的话,如果有HTML标签没有结束的话,会出现异常。

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

然后需要在源码的resources目录下,创建templates文件夹,所有的以后Thymeleaf模板文件都在这里进行创建。

第一个模板

实际上,如果不加任何标签,和html5几乎没有区别。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>Hello Thymeleaf</title>
    </head>
    <body>
        Hello world!
    </body>
</html>

模板创建好后,我们可以在SpringMVC中像使用JSP那样的使用Thymeleaf,一样的返回路径,一样的给ModelMap进行赋值。 加如我们的模板名称为index.html,并且在templates/app/目录下,那么Controller中可以这样定义页面的映射:

@RequestMapping("/index")
public String edit(ModelMap map){
	map.put("sayAnything", "说点啥呗~"));
	return "app/index";
}

常用标签

由于Web开发有大量的异步请求,所以开发人员日常工作中基本用不到那么多的标签,这里整理了一些Thymeleaf的常用标签:

说明用例运行结果
文本赋值<div th:text="${user.userName}" ></div><div>用户名</div>
属性赋值<input th:value="${user.userName}"/><input value="用户名"/>
文本拼接<div th:text="|你好啊,${user.userName}!!!|" ></div><div>你好啊,用户名</div>
条件判断<a th:if="${user!=null}" >详情</a>不为空时显示文本
循环List<li th:each="collect,i :${list}" th:text="|${i.index+1}.${collect.name}|"></li>...
日期格式化<input th:value="${#dates.format(date, 'yyyy-MM-dd')}" /><input value="2017-12-17" />
URL表达式<a th:href="@{/main}">主页</a><a href="/main">主页</a>