Thymeleaf模板引擎

1.Thymeleaf使用流程

Thymeleaf是一個Java模板引擎,支持html、xml、text、javascript、css、raw這幾種模型。

  • 使用Thymeleaf首先需要引入命名空間

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

2. 引入依賴

<!--引入thymeleaf模板引擎 注意需要3.0以上的版本否則失效-->
        <dependency>
            <groupId>org.thymeleaf</groupId>
            <artifactId>thymeleaf-spring5</artifactId>
        </dependency>
        <dependency>
            <groupId>org.thymeleaf.extras</groupId>
            <artifactId>thymeleaf-extras-java8time</artifactId>
        </dependency>

3.Spring Boot的Thymeleaf模板引擎默認訪問src/main/resources/templates路徑的文件夾,可以自行修改另外Thymeleaf默認的頁面文件后綴是.html,需要通過Controller將數據傳遞到頁面中,讓頁面進行動態展示。

@Controller
public class HelloController {
    @RequestMapping("/index")
    public String index(Model model){
        List<Object> list = new ArrayList<Object>();
        list.add("1");
        model.addAttribute("msg","hello,springboot");
        model.addAttribute("msgs","<h1>hello,springboot</h1>");
        model.addAttribute("list",list);
        return "index";
    }
}

4.基本的使用方法

  • Thymeleaf通過”@{}”來引用web靜態資源,例如:

<script th:src="@{bootstrap/js/boostrap.min.js}"></script>

  • 訪問model模型中的數據,例如訪問一個user對象的name屬性

<div th:text="${msg}"></div>

<div th:utext="${msgs}"></div> // utext 開啟自動拼接標簽

  • 數據迭代,例如迭代一個userlist集合
<tr th:each="user : ${userlist}">
    <td th:text="${user.name}">tyrone</td>
    <td th:text="${user.age}">18</td>
</tr>
  • 邏輯處理
    所有的頁面模版都存在各種基礎邏輯處理,例如:判斷、循環處理操作。在 Thymeleaf 之中對于邏輯可以使用如下的一些運算符來完成,例如:and、or、關系比較(>、<、>=、<=、==、!=、lt、gt、le、ge、eq、ne)

  • 判斷是不是為空:null:

<span th:if="${name} != null">不為空</span> 
<span th:if="${name1} == null">為空</span>
  • 判斷是不是為空字符串: “”
<span th:if="${#strings.isEmpty(name1)}">空的</span>
  • 判斷是否相同:
<span th:if="${name} eq 'jack'">相同于jack,</span> 
<span th:if="${name} eq 'ywj'">相同于ywj,</span> 
<span th:if="${name} ne 'jack'">不相同于jack,</span>
  • 不存在設置默認值:
<span th:text="${name2} ?: '默認值'"></span>
  • 是否包含(分大小寫):
<span th:if="${#strings.contains(name,'ez')}">包ez</span> 
<span th:if="${#strings.contains(name,'y')}">包j</span>
${#strings.startsWith(name,'o')} 
${#strings.endsWith(name, 'o')} 
${#strings.indexOf(name,frag)}// 下標 
${#strings.substring(name,3,5)}// 截取
${#strings.substringAfter(name,prefix)}// 從 prefix之后的一位開始截取到最后,比如 (ywj,y) = wj, 如果是(abccdefg,c) = cdefg//里面有2個c,取的是第一個c 
${#strings.substringBefore(name,suffix)}// 同上,不過是往前截取 
${#strings.replace(name,'las','ler')}// 替換 
${#strings.prepend(str,prefix)}// 拼字字符串在str前面 
${#strings.append(str,suffix)}// 和上面相反,接在后面 
${#strings.toUpperCase(name)} 
${#strings.toLowerCase(name)} 
${#strings.trim(str)} 
${#strings.length(str)} 
${#strings.abbreviate(str,10)}// 我的理解是 str截取0-10位,后面的全部用…這個點代替,注意,最小是3位
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • IT 1. LeetCode力扣:三個數的最大乘積 Java編寫2021-02-22(628. 三個數的最大乘積)...
    幸福大黑鴨閱讀 142評論 0 0
  • 昨晚的“噩夢” 跟大學好幾個班的同學(由其中有很多本班的同學判斷)坐車去重慶旅游(由道路坡度幾乎都偏垂直狀態判斷)...
    鹽大蝦閱讀 277評論 0 3
  • 夜鶯2517閱讀 127,752評論 1 9
  • 版本:ios 1.2.1 亮點: 1.app角標可以實時更新天氣溫度或選擇空氣質量,建議處女座就不要選了,不然老想...
    我就是沉沉閱讀 6,940評論 1 6
  • 我是一名過去式的高三狗,很可悲,在這三年里我沒有戀愛,看著同齡的小伙伴們一對兒一對兒的,我的心不好受。怎么說呢,高...
    小娘紙閱讀 3,414評論 4 7