Thymeleaf模板引擎及其与SpringBoot的整合(五)

一.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等文件夹下则不用指定路径。

   

成年人的世界没有那么多的童话,也没有那么多的逆袭。
原文地址:https://www.cnblogs.com/shijinglu2018/p/12132868.html