SpringBoot Web开发——整合Thymeleaf

SpringBoot Web开发——整合Thymeleaf

0.Thymeleaf简介

Thymeleaf是一款用于渲染HTML页面的模板引擎,类似JSP,Velocity,FreeMaker等 。

1.导入依赖

        <!--        thymeleaf 模板引擎-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

2.Thyemleaf自动配置类原理 ConfigurationProperties

在自动配置包下的ThymeleafProperties类,截取部分源码如下所示:

@ConfigurationProperties(
    prefix = "spring.thymeleaf"
)
public class ThymeleafProperties {
    private static final Charset DEFAULT_ENCODING;
    public static final String DEFAULT_PREFIX = "classpath:/templates/";
    public static final String DEFAULT_SUFFIX = ".html";
    private boolean checkTemplate = true;
    private boolean checkTemplateLocation = true;
    private String prefix = "classpath:/templates/";
    private String suffix = ".html";
    private String mode = "HTML";

可看到默认的html文件配置路径在classpath:/templates/,所以我们只需把HTML文件放到该路径下即可,Thyemleaf便会自动渲染。

2.Thymeleaf的基本使用

Thymeleaf的基本语法表达式分为四类:

  • URL表达式
  • 变量表达式
  • 选择或星号表达式
  • 文字国际化表达式
2.1 html标签中引入thymeleaf命名空间

thymeleaf命名空间 为:xmlns:th="http://www.thymeleaf.org

只有引入该命名空间后面的thymeleaf语法才生效。

<html  class="x-admin-sm" xmlns:th="http://www.thymeleaf.org">
2.2 URL表达式@{ }——Css / Js文件对应URL路径

简单两句话:

  • css文件引入 href=“css文件相对路径”——>th:href="@{css文件相对路径}(根据springboot静态资源映射路径规则)
  • js文件引入 src=“js文件相对路径”——>th:src="@{js文件相对路径}(根据springboot静态资源映射路径规则)

原先的css引入:

<link rel="stylesheet" href="./css/login.css" >

login.css位于springboot项目的static静态资源包下的xadmin下的css中:

根据springboot静态资源映射规则该URL为:/xadmin/css/login.css

所以使用Thymeleaf修改如下:

<link rel="stylesheet"  th:href="@{/xadmin/css/login.css}">
或者:
<link rel="stylesheet" href="./css/login.css" th:href="@{/xadmin/css/login.css}">

原先的Js 引入:

<script src="./lib/layui/layui.js" charset="utf-8"></script>

同理修改如下:

<script src="./lib/layui/layui.js" charset="utf-8"></script>
2.3 变量表达式 ${ }——获取变量值

设有实体类Word 包含id,english,chinese三个属性。

<div th:text="${session.word.english}">

获取word实体对象的english属性

2.4 选择或星号表达式 *{ }——获取变量值

很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行

//选择或星号表达式 以下写法
<div th:object="${session.word}">
    <p>英文: <span th:text="*{english}">english</span>.</p>
    <p>中文: <span th:text="*{chinese}">chinese</span>.</p>
  </div>

//等价于变量表达式 ${ } 以下写法
<div>
  <p>英文: <span th:text="${session.word.english}">english</span>.</p>
  <p>中文: <span th:text="${session.word.chinese}">chinese</span>.</p>
</div>
2.5 文字国际化表达式 #{ }——获取外部文件中的区域文字信息

文字国际化表达式允许我们从一个外部文件获取区域文字信息(.properties),用Key索引Value,还可以提供一组参数(可选). 用的很少…

     <th th:text="#{header.address.city}">...</th>  
     <th th:text="#{header.address.country}">...</th> 

表达式支持的语法就很多,还有一些常用的th标签,推荐官方文档,这里也推荐几篇博客:

[Thymeleaf 的基本用法]( https://segmentfault.com/a/1190000017563310#item-1-9 )

thymeleaf 标准表达式语法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值