初识

https://www.thymeleaf.org/

https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

关闭缓存,不然每次都要重启

spring.thymeleaf.cache=false

使用

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

<!-- 热启动 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

html页面放入templates下

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

th:text

th:style

@GetMapping("/thymeleaf")
public String thymeleaf(Model model) &#123;
    model.addAttribute("msg", "hello thymeleaf");
    model.addAttribute("list", Arrays.asList("myname", "mingyue", "fusu"));
    return "thymeleaf";
&#125;
<div th:text="$&#123;msg&#125;"></div>
<div th:utext="$&#123;msg&#125;"></div> 可以识别标签
<div th:each="item : $&#123;list&#125;" th:text="$&#123;item&#125;"></div>
<div th:each="item : $&#123;list&#125;">[[ $&#123;item&#125; ]]</div>

语法

简单表达:

  • 变量表达式: ${...}
  • 选择变量表达式: *{...}
  • 消息表达式: #{...}
  • 链接网址表达式: @{...}
  • 片段表达式: ~{...}

字面

  • 文本文字:'one text''Another one!',…
  • 号码文字:0343.012.3,…
  • 布尔文字:truefalse
  • 空字面: null
  • 文字标记:onesometextmain,…

文字操作:

  • 字符串连接: +
  • 文字替换: |The name is ${name}|

算术运算:

  • 二元运算符:+-*/%
  • 减号(一元运算符): -

布尔运算:

  • 二元运算符:andor
  • 布尔否定(一元运算符): !not

比较和平等:

  • 比较:><>=<=gtltgele
  • 平等运营商:==!=eqne

有条件:

  • IF-THEN: (if) ? (then)
  • IF-THEN-ELSE: (if) ? (then) : (else)
  • 默认: (value) ?: (defaultvalue)

特殊代币:

  • 无操作: _

标签

```php
th:if=”{not #strings.isEmpty(msg)}”
th:each=”item : ${items}”

// text
th:text=”#{login.btn}”
th:utext=”#{person.html}”

// url
th:href=”@{/index.html(l=’zh_CN’)}”
th:href=”@{/admin/people/(${people.id})}” 使用restful风格传递参数
th:href=”|http://item.gulimall.com/${product.skuId}.html|"
th:href=”@{http://search.gulimall.com(catId=${catagory.catId})}"

th:placeholder=”#{login.username}”
th:attr=”myattr=${person.data}” # 自己的属性

// class
th:class=”${( !#strings.isEmpty(p)
&& #strings.startsWith(p,’hotScore’)
&& #strings.endsWith(p,’desc’))
? ‘sort_a desc’ : ‘sort_a’ }”

th:fragment=”topbar”
th:insert=”{dashboard::topbar}”
th:replace=”
{commons/commons::topbar}” ()传递参数

行内表达式 [[${data}]]

将参数变为本地变量 this:with=”name = ${param.name}”
判断字符串是否为空 $