Spring boot的模板引擎(二):Thymeleaf的引入与语法

一、Thymeleaf的引入

<dependencies>
   ……
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-thymeleaf</artifactId>
       <!--2.1.6-->
    </dependency>
   ……
</dependencies>

<!--切换thymeleaf的版本-->
 <properties>
     <java.version>1.8</java.version>
     <thymeleaf.version>3.0.10.RELEASE</thymeleaf.version>
     <thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
 </properties>

注意:

 <!--布局功能的支持程序 
     layout是做布局功能扩展的
 -->
 thymeleaf 3------------------ layout2
  thymeleaf2 ----------------- layout1

二、Thymeleaf的使用&语法

1、使用

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties {

	private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;

	public static final String DEFAULT_PREFIX = "classpath:/templates/";

	public static final String DEFAULT_SUFFIX = ".html";

使用步骤

  ①只要把HTML页面放在classpath:/templates/,thymeleaf就能自动渲染
  ②引入名称约束空间

<html lang="en"  xmlns:th="http://www.thymeleaf.org">

  ③在html页面中应用

<!DOCTYPE html>
<html lang="en"  xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>success</title>
</head>
<body>
<h2>响应成功页面</h2>
<!--设置文本内容-->
<div th:text="${hello}"></div>
</body>
</html>

2、语法规则

2.1 th:属性

  th:任意html属性 ------替换原生属性的值;th:text-----------改变/设置当前元素的文本内容

<div id="mydiv" class="mydiv" th:text="${hello}" th:id="${hello}" th:class="${hello}"></div>

在这里插入图片描述
在这里插入图片描述

2.2 表达式

2.2.1 Simple expressions(表达式语法)

  • Variable Expressions(变量表达式): ${…}:获取变量值;OGNL

    1)获取对象的属性、调用方法
    2)使用内置的基本对象:

#ctx : the context object. 上下文对象
#vars: the context variables.  上下文变量 
#locale : the context locale.  上下文环境
#request : (only in Web Contexts) the HttpServletRequest object.  http请求对象
#response : (only in Web Contexts) the HttpServletResponse object.   http响应对象
#session : (only in Web Contexts) the HttpSession object.   session对象
#servletContext : (only in Web Contexts) the ServletContext object.    

例如:

${session.foo}

3)内置的一些工具对象:

 #execInfo : information about the template being processed. 
 #messages : methods for obtaining externalized messages inside variables expressions, in the same way as they would be obtained using 
 #{…} syntax.
 #uris : methods for escaping parts of URLs/URIs 
 #conversions : methods for executing the configured conversion service (if any). 
 #dates : methods for java.util.Date objects: formatting, component extraction, etc. #calendars : analogous to 
 #dates , but for java.util.Calendar objects. 
 #numbers : methods for formatting numeric objects. 
 #strings : methods for String objects: contains, startsWith, prepending/appending, etc. 
 #objects : methods for objects in general. 
 #bools : methods for boolean evaluation. 
 #arrays : methods for arrays. 
 #lists : methods for lists. 
 #sets : methods for sets. 
 #maps : methods for maps. 
 #aggregates : methods for creating aggregates on arrays or collections. 
 #ids : methods for dealing with id attributes that might be repeated (for example, as a result of an iteration). 
  • Selection Variable Expressions: *{…}:选择表达式
和${}在功能上是一样。

补充:配合 th:object="${session.user}: 

例如:

<div th:object="${session.user}"> 
    <p>Name: <span th:text="*{firstName}">Sebastian</span>.
    </p> 
    <p>Surname: <span th:text="*{lastName}">Pepper</span>.</p>    <p>Nationality: <span th:text="*{nationality}">Saturn</span>.</p> 
</div>
  • Message Expressions: #{…}:获取国际化内容

  • Link URL Expressions: @{…}:定义URL链接

@{/order/process(execId=${execId},execType='FAST')}
  • Fragment Expressions: ~{…}:片段引用表达式
<div th:insert="~{commons :: main}">...</div> 

2.2.2 Literals(字面量):

  • Text literals: ‘one text’ , ‘Another one!’ ,…

  • Number literals: 0 , 34 , 3.0 , 12.3 ,…

  • Boolean literals: true , false

  • Null literal: null

  • Literal tokens: one , sometext , main ,…

2.2.3 Text operations(文本操作):

  • String concatenation: + 拼串
  • Literal substitutions: | 替换
  • The name is ${name}|

2.2.4 Arithmetic operations(数学运算):

  • Binary operators: + , ‐ , * , / , %
  • 2.2.5 Minus sign (unary operator): -

2.2.5 Boolean operations(布尔运算):

  • Binary operators: and , or
  • Boolean negation (unary operator): ! , not

2.2.6 Comparisons and equality(比较运算):

  • Comparators: > , < , >= , <= ( gt , lt , ge , le )
  • Equality operators: == , != ( eq , ne )

2.2.7Conditional operators:条件运算(三元运算符):

If‐then: (if) ? (then) 
If‐then‐else: (if) ? (then) : (else) 
Default: (value) ?: (defaultvalue) 

2.2.8 Special tokens:

  • No‐Operation: _ 无操作

示例

以内联方式设置文本元素的文本值

  • [[]]--------th:text 转义
  • [()]--------th:utext 不转义
<div th:text="${hello}"></div>
<div th:utext="${hello}"></div>
<hr/>
<span>[[${hello}]]</span>
<hr/>
<span>[(${hello})]</span>
<hr/>
<!--会生成三个<h3></h3>标签-->
<h3 th:each="user:${users}" th:text="${user}"></h3>
<hr/>
<!--一个h3标签,3个span标签-->
<h3 th:each="user:${users}">
    <span>[[${user}]]</span>
</h3>

运行结果图:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值