一.Thymeleaf的由来、特点、作用
由来:SpringBoot不太支持JSP,主要包含Thymeleaf和Freemarker等模板引擎。
特点:Thymeleaf是一种模板引擎,主要用于输出HTML、邮件等;
作用:把model中的数据渲染到html中,Thymeleaf语法如何解析model中的数据;
二. 常用语法之标准表达式
主要的标准表达式:变量表达式${ } 、 选择表达式*{ } 、 消息表达式#{ } 、 连接表达式@{ }、片段表达式 ~{ } ;
变量表达式${ } :动态的取上下文的变量值,一般如果配置正确且启动了程序则可以取到值。
选择表达式*{ } : 从选定的上下文中获取属性值。
消息表达式#{ } : 国际化的动态内容的替换与展示;
链接表达式@{ } : 用于页面跳转或资源引入;
片段表达式~{ } :是一种将标记片段移动到模板中的方法。
三.在SpringBoot中使用Thymeleaf
1)用Initialzr方式创建SpringBoot项目,创建过程中需要选择web场景依赖,并且模板引擎选择Thymeleaf场景依赖。
2)在全局配置文件中对Thymeleaf进行数据缓存设置,一般开发阶段都是将缓存设置为false,以便及时刷新,待上线稳定不需要更新后再将其设置为true。
spring.thymeleaf.cache=false
3)由于是模板视图,所以需要创建web控制器来处理和响应。
package com.sjl.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import java.util.Calendar; //标志当前为控制器,并将其注入到Spring容器 @Controller public class ActionController { @GetMapping("/toAction") public String toAction(Model model){ model.addAttribute("name",function()); return "login"; } }
说明:上面这是伪代码,无法执行,但是逻辑类似,当然也可以替换成modelAndView,它与Model接口的区别是,Model和它都是用作数据传输,但是modelAndView有一个寻址的过程,另外,使用时需要创建对象。
4)创建模板页面并引入静态资源文件。
创建模板页面:
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <title></title> <link th:href="@{/login/css/bootstrap.min.css}" rel="stylesheet"> <link th:href="@{/login/css/signin.css}" rel="stylesheet"> </head> <body class="text-center"> <form class="form-signin"> <img class="mb-4" th:src="@{/login/img/login.jpg}" width="72" height="72"> <p class="mt-5 mb-3 text-muted"><span th:text="${name}">用户名</span></p> </form> </body> </html>
在全局配置文件中引入静态资源:
spring.messages.basename=i18n.login
很多都说basename后面以逗号分隔,但是这里用的是.来分隔,逗号分隔居然显示乱码,但是.分隔反而好了,下次两种都试试。另外,如果说该资源文件已在public、static、template等文件夹下则不用指定路径。