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/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

发表回复

登录后才能评论