Thymeleaf模板引擎

Thymeleaf是一個模板引擎,可用於Web和獨立環境。它是一個開源的Java庫,可用於處理XML,HTML,JavaScript,CSS,甚至純文本。

一、基本語法

Thymeleaf模板引擎使用類似於HTML的語法,但具有特殊的標籤以及額外的屬於它自己的語法。

如下是Thymeleaf的基本語法:

    
        <!DOCTYPE html>
        <html xmlns:th="http://www.thymeleaf.org">
        <head>
            <title>Hello World</title>
        </head>
        <body>
            <p th:text="${'Hello, ' + name}">沒有設置名字</p>
        </body>
        </html>
    

在上面的示例代碼中,我們使用th:text屬性告訴引擎輸出「Hello,名字」。

使用Thymeleaf的語法,你可以像使用正常的HTML標籤一樣使用它內置的屬性和標籤,例如:

    
        <p th:if="user.isAdmin">只有管理員能看到</p>
        <div th:switch="${user.role}">
            <p th:case="'admin'">你是管理員</p>
            <p th:case="'user'">你是普通用戶</p>
            <p th:case="*">你是新用戶</p>
        </div>
    

上述代碼中,我們使用了th:if和th:switch屬性來指示引擎條件邏輯。這些屬性的語法看起來很像Java。

二、模板布局

Thymeleaf允許使用一個獨立的布局文件作為模板,這個文件定義了整個站點的結構,每個頁面「擴展」它並覆蓋其中的模塊。

下面是一個示例代碼展示如何使用布局模板:

布局模板 – layout.html:

    
        <!DOCTYPE html>
        <html xmlns:th="http://www.thymeleaf.org">
        <head>
            <title>My Site</title>
        </head>
        <body>
            <header>
                <nav>
                    <ul>
                        <li><a href="/home" th:href="@{/home}">Home</a></li>
                        <li><a href="/about" th:href="@{/about}">About</a></li>
                        <li><a href="/contact" th:href="@{/contact}">Contact</a></li>
                    </ul>
                </nav>
            </header>
            <section>
                <div th:replace="template :: content"></div>
            </section>
            <footer>
                <p>All rights reserved!</p>
            </footer>
        </body>
        </html>
    

模塊模板 – home.html:

    
        <!DOCTYPE html>
        <html xmlns:th="http://www.thymeleaf.org" th:include="layout :: layout">
        <head>
            <title>Home</title>
        </head>
        <body>
            <!-- Override the content section of the layout.html file -->
            <div th:fragment="content">
                <h1>Welcome to my site!</h1>
                <p>This is the home page.</p>
            </div>
        </body>
        </html>
    

在上述示例中,我們使用th:replace屬性告知引擎插入一個模板片段。我們還使用了th:fragment屬性,它定義了模板片段的名字。

三、迭代

當你使用Thymeleaf構建動態Web頁面時,你經常需要迭代集合,例如:

    
        <ul>
            <li th:each="item : ${items}">
                <a th:href="@{/view/(id=${item.id})}">[[${item.name}]]</a>
            </li>
        </ul>
    

在上述代碼中,我們使用th:each屬性迭代items集合,使用item變數來引用當前迭代項。我們還使用了th:href屬性來定義鏈接URL,並在鏈接文本中使用了Thymeleaf表達式。

四、條件渲染

Thymeleaf提供了多種條件渲染方式。你可以使用th:if和th:unless屬性,條件渲染有點像if和unless語句。

如下是一個簡單的例子:

    
        <p th:if="${user.isAdmin}">Admin</p>
        <p th:unless="${user.isAdmin}">Not Admin</p>
    

在上述代碼中,我們使用了th:if和th:unless屬性,這些屬性提供了基於條件渲染的功能,如果滿足條件則渲染。

五、變數表達式

Thymeleaf支持多種變數表達式,例如:

${…}用於查詢表達式的值。

*{…}用於屬性值或類型的聲明。

${fns:xxx(…)}使用Thymeleaf標準函數庫執行表達式。

#{…}用於國際化文本顯示。

下面是一個使用變數表達式的示例:

    
        <p>Price: <span th:text="${price}"></span></p>
        <input type="text" th:field="*{username}">
        <p th:text="${#dates.format(date, 'dd-MM-yyyy')}">29-10-2022</p>
        <p th:text="#{user.welcome}">Hello, User!</p>
    

在上述代碼中,我們使用了變數表達式,例如th:text屬性,它被使用來引用 price 變數的內容,另外我們使用了th:field屬性來綁定到一個輸入元素,這裡我們使用了*{username}變數,並推斷出了它的類型,並根據它的類型生成了name屬性。我們還使用了#{}符號來提示引擎通過對指定鍵執行國際化來顯示文本。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192733.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 10:29
下一篇 2024-12-01 10:29

相關推薦

  • Java2D物理引擎簡介及應用

    本文將介紹Java2D物理引擎的基本概念、實現原理及應用案例,以及對應代碼示例。 一、物理引擎概述 物理引擎是一種計算機程序,用於模擬物理系統中的對象和其互動,如重力、碰撞、彈力等…

    編程 2025-04-29
  • 心形照片拼圖模板

    如何使用心形照片拼圖模板 一、模板介紹 心形照片拼圖模板是一種讓用戶可以將自己的照片拼接成一個心形的巧妙設計,每個照片都是一個拼圖塊,當所有的照片配合完成時,呈現出一個完整的心形。…

    編程 2025-04-29
  • leveldb和unqlite:兩個高性能的資料庫存儲引擎

    本文將介紹兩款高性能的資料庫存儲引擎:leveldb和unqlite,並從多個方面對它們進行詳細的闡述。 一、leveldb:輕量級的鍵值存儲引擎 1、leveldb概述: lev…

    編程 2025-04-28
  • 基尼係數Excel計算模板

    這篇文章將介紹基尼係數Excel計算模板,為大家詳細闡述如何使用Excel進行基尼係數的計算。 一、模板下載及導入 首先需要下載基尼係數的Excel計算模板,可以在Excel中通過…

    編程 2025-04-28
  • iCircuit文件電路模板

    iCircuit是一款允許用戶在移動設備上輕鬆創建、模擬和共享電路模板的應用程序。 iCircuit還允許您向其他用戶展示您的電路設計,並從其他人那裡獲取靈感和想法。在本文中,我們…

    編程 2025-04-27
  • 使用Thymeleaf動態渲染下拉框

    本文將從下面幾個方面,詳細闡述如何使用Thymeleaf動態渲染下拉框: 一、Thymeleaf是什麼 Thymeleaf是一款Java模板引擎,可用於Web和非Web環境中的應用…

    編程 2025-04-27
  • Python寫Word模板簡介

    Python可以用來生成Word文檔,讓你可以自動化生成報表、合同、申請表等文檔。本文將從多個方面詳細介紹Python寫Word模板的方法和技巧。 一、Word模板的結構 要生成W…

    編程 2025-04-27
  • 資料庫存儲引擎

    一、什麼是資料庫存儲引擎 資料庫存儲引擎是資料庫系統中的核心組件之一,它存儲、訪問和管理數據。 存儲引擎是資料庫系統中與底層存儲操作相關的部分,負責將數據存儲到物理介質上,控制數據…

    編程 2025-04-25
  • 詳解Thymeleaf HTML

    一、模板引擎介紹 Thymeleaf是一個XML/HTML模板引擎,可用於Web和非Web環境中。它是Spring框架的一部分,但也可以在非Spring應用程序中使用。 Thyme…

    編程 2025-04-25
  • Vue快捷鍵生成模板

    Vue是一個高效、靈活的JavaScript框架。在日常的開發過程中,Vue組件模板代碼的編寫是必不可少的部分。Vue快捷鍵生成模板是一個優秀的插件,它可以幫助我們在編寫Vue組件…

    編程 2025-04-24

發表回復

登錄後才能評論