Springboot整合thymeleaf模板

Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用。

Thymeleaf的主要目标在于提供一种可被浏览器正确显示的、格式良好的模板创建方式,因此也可以用作静态建模。你可以使用它创建经过验证的XML与HTML模板。相对于编写逻辑或代码,开发者只需将标签属性添加到模板中即可。接下来,这些标签属性就会在DOM(文档对象模型)上执行预先制定好的逻辑。Thymeleaf的可扩展性也非常棒。你可以使用它定义自己的模板属性集合,这样就可以计算自定义表达式并使用自定义逻辑。这意味着Thymeleaf还可以作为模板引擎框架。
Thymeleaf的模板还可以用作工作原型,Thymeleaf会在运行期替换掉静态值。例如下面的html文件,当作为静态文件时,product name显示为Red Chair,当运行在容器中并提供product这个对象时,product name的值会自动替换为product.description对应的值。下面就简单的讲一讲springboot整合thymeleaf模板。
1.引入依赖
在maven(pom.xml)中直接引入:

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

也可以在创建项目时候勾选thymeleaf模板,这样会自动生成。
2.配置视图解析器

(1)默认

spring-boot很多配置都有默认配置,比如默认页面映射路径为

classpath:/templates/*.html 

同样静态文件路径为

classpath:/static/

(2)自定义

在application.properties(或者application.yml)中可以配置thymeleaf模板解析器属性.就像使用springMVC的JSP解析器配置一样

#thymeleaf start
   spring.thymeleaf.mode=HTML5
   spring.thymeleaf.encoding=UTF-8
   spring.thymeleaf.content-type=text/html 
   #开发时关闭缓存,不然没法看到实时页面
   spring.thymeleaf.cache=false
   #thymeleaf end

具体可以配置的参数可以查看 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafProperties 这个类,上面的配置实际上就是注入到该类中的属性值.

3.编写demo来说明使用方法

(1)控制器

@Controller
 public class HelloController(){
   
      @RequestMapping(value = "/")
      public String index(){
   
         return "index";
      }
    }

这样会返回一个新的视图页面index.html,当然也可以使用下面的方法

@RequestConteoller
   public class HelloController(){
      @RequestMapping(value = "/")
      public ModelAndView index(){
         return new ModelAndView("index");
      }
    }

这样能直接返回整个index页面。
(2)view

<!DOCTYPE html>
<html  xmlns:th="http://www.thymeleaf.org" >
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
       <b th:text="hello,world!"><b/>
</body>
</html>

注意,在html标签里一定要引入 xmlns:th=“http://www.thymeleaf.org” ,这样thymeleaf模板才会启用。至于thymeleaf的具体使用方法,以后在讲。

(3)测试

访问 localhost:8080/ 这个地址,会直接跳转到 index.html 页面,并显示如下

在这里插入图片描述
4.基础语法

(1)引入标签

首先要在html标签里引入xmlns:th="http://www.thymeleaf.org"才能使用th:*这样的语法。

(2)获取变量值

通过在标签内部,使用 ${} 来取值,对于javaBean的话,使用 变量名.属性名 来获取,跟EL表达式一样
  注意:只有写在标签内部才会生效,例如: th:text=“hello” 的意思是使用hello来代替p之前的内容,p里原来的值是为了给前端开发展示用的,这样做容易实现前后端分离。

(3)引入URL

thymeleaf对于引入URL是采用@{…}来获取的

例如: 绝对路径 是访问绝对路径下的URL, 相对路径 是访问相对路径下的URL。
      是引入默认的static下的css文件夹下的bootstrap文件,类似的标签有: th:href 和 th:src

(4)字符串替换
例如使用: 或者

                  <span th:text="|Welcome to our application, ${user.name}!|"></span>  都可以实现替换

注意:|…|中只能包含变量表达式${…},不能包含其他常量、条件表达式等。

(5)运算符

在表达式中可以使用各类算术运算符,例如 +, -, *, /, % .例如: th:with=“isEven=(${prodStat.count} % 2 == 0)”
逻辑运算符 >, <, <=,>=,==,!= 都可以使用,唯一需要注意的是使用 <,> 时需要用它的HTML转义符:

th:if="${prodStat.count} &gt; 1"
th:text="'Execution mode is ' + ( (${execMode} == 'dev')? 'Development' : 'Production')"

(6)条件
if/unless th:if是该标签在满足条件的时候才会显示,unless是不成立时候才显示,例如

<a th:href="@{/login}" th:unless=${session.user != null}>Login</a>

Switch thymeleaf支付switch结构,默认属性(default)用*表示,例如:

 <div th:switch="${user.role}">
     <p th:case="'admin'">User is an administrator</p>
     <p th:case="#{roles.manager}">User is a manager</p>
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值