- Thymeleaf 的特点
Spring Boot中推荐使用Thymeleaf作为模板引擎. 因为Thymeleaf提供了完美的SpringMVC支持。 Thylemeleaf通过特定的语法对html的标记进行渲染。 |
- SpringBoot整合Thymeleaf的步骤
2.1 创建spring boot项目
2.2. 打开pom.xml文件,查看启动器和jar坐标
<dependency> |
2.3. 编写用户实体类 (同上)
2.4. 编写获取用户信息控制器(同上)
/** * 控制器返回一个代表跳转路径String的值,框架会自动在templates目录下, * 找到与之对应html,由Thymeleaf进行渲染出来. * 默认会认为跳转xxx.html页面,如果想要跳转到控制器,需要加上forward:或redirect: */ @Controller //跳转到thymeleaf的页面进行展示,设置前缀:classpath:/templates/ 后缀:.html return "usersList"; |
2.5. 编写视图层Thymeleaf页面
Thymeleaf页面必须放在templates的目录下。在templates下创建usersList.html
<!DOCTYPE html> |
2.6 打开application.properties配置文件,配置Thymeleaf
#thymeleaf配置 |
2.7 运行启动类,效果如下
|
- Thymeleaf 语法详解
3.1 变量输出
th:text | 设置标签的文本内容 |
th:value | 设置input 标签的 value 属性值 |
案例演示
文本显示消息:<span th:text="${msg}"></span> |
3.2 内置对象
注意语法:
1.调用内置对象一定要用#
2.大部分的内置对象都以 s 结尾 如:strings、numbers、dates、lists
3.2.1 strings 字符串对象
${#strings.isEmpty(msg)} | 判断字符串是否为空,如果为空返回 true,否则返回 false |
${#strings.contains(msg,'T')} | 判断字符串是否包含指定的子串,如果包含返回 true,否则返回 false |
${#strings.startsWith(msg,'a')} | 判断当前字符串是否以子串开头,如果是返回 true,否则返回 false |
${#strings.endsWith(msg,'a')} | 判断当前字符串是否以子串结尾,如果是返回 true,否则返回 false |
${#strings.length(msg)} | 返回字符串的长度 |
${#strings.indexOf(msg,'h')} | 查找子串的位置,并返回该子串的下标,如果没找到则返回-1 |
${#strings.substring(msg,13)} | 截取子串 |
${#strings.toUpperCase(msg)} | 字符串转大写 |
${#strings.toLowerCase(msg)} | 字符串转小写 |
案例演示
msg是否为空:<span th:text="${#strings.isEmpty(msg)}"></span> |
3.2.2日期格式化处理
${#dates.format(key)} | 格式化日期,默认的以浏览器默认语言为格式化标准 |
${#dates.format(key,'yyyy/MM/dd')} | 按照自定义的格式做日期转换 |
${#dates.year(key)} | 获取日期中指定年份 |
${#dates.month(key)} | 获取日期中指定月份 |
${#dates.day(key)} | 获取日期中指定日 |
案例演示
显示日期:<span th:text="${time}"></span> |
3.3 条件判断
3.3.1 th:if
<span th:if="${sex}=='男'">性别:男</span> |
3.3.2 th:switch
<div th:switch="${sex}"> |
3.4 迭代遍历
3.4.1 th:each 迭代List集合
<table width="480px" align="center" border="1" cellspacing="0" cellpadding="0"> |
状态变量属性 :
1. index:当前迭代器的索引 从 0 开始
2. count:当前迭代对象的计数 从 1 开始
3. size:被迭代对象的长度
4. even/odd:布尔值,当前循环是否是偶数/奇数 从 0 开始
5. first:布尔值,当前循环的是否是第一条,如果是返回 true 否则返回 false
6. last:布尔值,当前循环的是否是最后一条,如果是则返回 true 否则返回 false
<tr th:each="user,var:${list}"> </tr> |
3.4.2 th:each 迭代Map集合(省略,自己学习)
3.5. URL 表达式
3.5.1. Url相关的th指令
th:href th:src th:action |
3.5.2. Url表达式语法
@{} 如: <a th:href="@{http://www.baidu.com}" >百度一下</a> |
3.5.3 在 url 中实现参数传递
1.方式一:通过url?key=value&key=value方式传参 2.方式二:通过restful风格方式传参 |
<a th:href="@{/getUser(id=1,name=xiaozhang)}">获取用户</a> |
3.6 . 域对象操作
3.6.1 操作Request作用域
public String getUsers(Model model,HttpServletRequest request){ request.setAttribute("msg1","request作用域"); } <span th:text="${msg1}"></span> |
3.6.2 操作Session作用域
request.getSession().setAttribute("msg2","session作用域"); <span th:text="${session.msg2}"></span> |
3.6.3 操作ServletContext作用域
request.getServletContext().setAttribute("msg3","application作用域"); <span th:text="${application.msg3}"></span> |