Java基础总结之Thymeleaf详解

yizhihongxing

下面我将从以下几个方面完整讲解Java基础总结之Thymeleaf详解。

一、Thymeleaf 简介

Thymeleaf 是一个模板引擎,用于将数据渲染到 HTML、XML、JavaScript 或者纯文本等格式的文档中。它可以填充表单和复杂的 HTML 纯文本,从而生成动态的 Web 页面。Thymeleaf 提供了强大的表达式工具,支持表单绑定和模板布局等功能。

二、Thymeleaf 使用方法

Thymeleaf 的使用非常简单,以下示例展示了 Thymeleaf 将数据注入到 HTML 页面中的过程。

1. 添加 Thymeleaf 之前,需要添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>${spring.boot.version}</version>
</dependency>

2. 开启模板解析

在 Spring Boot 中,默认已经开启 Thymeleaf 模板解析。在 Spring MVC 的配置文件中添加如下配置:

<bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="classpath:/templates/"/>
    <property name="suffix" value=".html"/>
    <property name="templateMode" value="HTML"/>
    <property name="characterEncoding" value="UTF-8"/>
</bean>

<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver"/>
    <property name="enableSpringELCompiler" value="true"/>
</bean>

<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine"/>
    <property name="characterEncoding" value="UTF-8"/>
</bean>

这里的前缀设置为 templates,表示模板文件放在 resources/templates 目录下,后缀设置为 .html

3. 在 html 文件中使用 Thymeleaf 语法

以下示例展示了 Thymeleaf 填充数据的过程。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Title</title>
</head>
<body>
    <h1 th:text="${title}">Title here</h1>
</body>
</html>

上述代码中,使用了 Thymeleaf 的标签 th:text 和表达式 ${title},将 title 的值注入到页面中。

三、Thymeleaf 的语法

Thymeleaf 提供了丰富的语法,以下是 Thymeleaf 常用语法:

1. 声明变量

Thymeleaf 中的变量声明以 # 开始。

<p th:text="${#lists.size(list)}>0 items</p>

2. 表达式

表达式以 ${} 开始,可以引用变量、字符串、对象等。

<p th:text="'hello ' + ${user.name}">hello user</p>

3. 条件判断语句

条件判断语句使用 th:if 标签。

<div th:if="${value > 0}">value > 0</div>

4. 循环语句

循环语句使用 th:each 标签。

<ul>
    <li th:each="item : ${items}" th:text="${item}">item</li>
</ul>

这里的 items 是一个 List 对象,循环将 List 中的元素填充到 HTML 中。

5. 链接

使用 Thymeleaf 可以很方便地生成链接。

<a th:href="@{http://www.example.com}/">visit example.com</a>

在 href 属性中使用 @{} 标记可以轻松地生成链接,可以填充变量、字符串和具体值。

四、为什么要使用 Thymeleaf?

相比于传统的 JSP,Thymeleaf 有以下几个优点:

  1. Thymeleaf 继承自与 HTML 一样的标准语法,非常易于学习和使用;
  2. Thymeleaf 是一个独立的模板引擎,适用于多种应用场景,而 JSP 依赖于 Servlet 容器,需要在容器内部运行;
  3. Thymeleaf 支持多种模板布局方式,包括模板片段、布局、片段内联等,具有较高的灵活性。

五、实例说明

这里简单概述两个使用场景。

1. 表单数据填充

Thymeleaf 可以很方便地将表单数据注入到 HTML 页面中。

<form action="/user/save" method="post">
    <div>
        <label>姓名</label>
        <input type="text" name="name" th:value="${user.name}">
    </div>
    <div>
        <label>年龄</label>
        <input type="number" name="age" th:value="${user.age}">
    </div>
    <button type="submit">保存</button>
</form>

上述代码中,使用了 th:value 将 user 对象中的数据注入到了表单中。接收到表单提交的数据时,只需要在 Java 代码中定义一个与表单参数名相同的属性即可。

2. 模板布局

Thymeleaf 支持多种模板布局方式,包括模板片段、布局、片段内联等。

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

<head>
    <meta charset="UTF-8">
    <title th:text="${title}">Default Title</title>
    <link th:href="@{/css/bootstrap.css}" rel="stylesheet"/>
</head>

<body>
    <nav th:replace="fragments/layout :: nav"></nav>
    <div class="container">
        <div class="row">
            <div class="col-md-3">
                <ul class="list-group">
                    <li class="list-group-item"><a href="/">Home</a></li>
                    <li class="list-group-item"><a href="/users">Users</a></li>
                </ul>
            </div>
            <div class="col-md-9" th:fragment="content">
                <!-- content here -->
                <p th:utext="${content}"></p>
            </div>
        </div>
    </div>
    <footer th:replace="fragments/layout :: footer"></footer>
    <script th:src="@{/js/jquery.js}"></script>
</body>

</html>

以上代码中,页面布局和导航栏都定义在时在 /resources/templates/fragments/layout.html 文件中。这样可以避免重复代码的定义。 在其他页面中可以使用 th:replace 引入该模板文件即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基础总结之Thymeleaf详解 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 百度推广里中怎么查看网站页面排名?

    以下是“百度推广里中怎么查看网站页面排名?”的完整攻略: 百度推广里中怎么查看网站页面排名? 在百度推广中,可以通过以下步骤查看网站页面排名: 登录百度推广:在浏览器中输入“推广.baidu.com”,进入百度推广登录页面,输入账号和密码登录。 进入推广计划:在百度推广主界面中,选择需要查看排名的推广计划,进入推广计划页面。 进入关键词列表:在推广计划页面中…

    html 2023年5月18日
    00
  • ASP.NET读取XML文件4种方法分析

    ASP.NET是一个强大的Web应用程序框架,它允许开发人员使用不同的语言和工具来创建互联网上的动态应用程序。其中,读取XML文件是ASP.NET程序中很常见的操作,它使得我们能够在程序中使用XML自定义数据。 在ASP.NET中,读取XML文件有以下四种方法: 方法1:使用XmlDocument类 XmlDocument类是由System.Xml命名空间提…

    html 2023年5月30日
    00
  • otg功能是什么?手机otg功能怎么用?

    OTG功能是什么?手机OTG功能怎么用? OTG(On-The-Go)是一种USB标准,它允许设备在不需要计算机的情况下直接连接到其他设备。手机OTG功能是指手机可以通过OTG线连接到其他USB设备,例如U盘、鼠标、键盘等。以下是关于OTG功能的攻略,包括以下几个步骤: 步骤1:检查手机是否支持OTG功能 在使用手机OTG功能之前,您需要检查您的手机是否支持…

    html 2023年5月17日
    00
  • 解决zabbix监控因php问题导致图形界面中文乱码方法

    下面是解决zabbix监控因php问题导致图形界面中文乱码的完整攻略: 问题背景 Zabbix是一款流行的开源监控系统,用于监控网络服务、服务器、虚拟机等。但是,有时会因为PHP的编码方式或字符集问题导致在Zabbix图形化界面中出现中文乱码问题。 原因分析 Zabbix图形化界面是使用PHP开发的,所以PHP的编码方式和字符集会对Zabbix产生影响。如果…

    html 2023年5月31日
    00
  • 简单了解XML中的命名空间

    下面我将为你详细讲解简单了解XML中的命名空间。 什么是XML中的命名空间 在XML中,元素和属性名称是没有强制性规定的,因此可能存在同名的元素或属性,所以需要使用命名空间来为XML文档中的元素和属性进行唯一标识。 命名空间是XML文档中定义元素或属性名称的URI(Uniform Resource Identifier),URI是一个字符串,用来唯一标识一个…

    html 2023年5月30日
    00
  • PHP 以POST方式提交XML、获取XML,解析XML详解及实例

    当我们需要与远程服务器进行数据交互时,POST方式提交XML数据是一种很常见的方式。在这里,我将为您提供一份详细的攻略,包括如何使用PHP以POST方式提交XML、获取XML、解析XML的过程,以及两个示例说明。 准备工作 在我们开始之前,下面是一些准备工作,我们必须要做的: PHP 运行环境(5.2及以上) CURL库 (可以通过apt-get, yum等…

    html 2023年5月30日
    00
  • 2016年最热门的15 款代码语法高亮工具,美化你的代码

    标准markdown格式的文本是一种专门用于编写文档的语言,可使您的文本看起来更具可读性。在编写代码高亮代码时,使用markdown的语法高亮功能可以轻松地让您的代码块带有更具吸引力的外观,提高代码的可读性和可维护性。下面介绍如何使用2016年最热门的15款代码语法高亮工具美化您的代码。 工具及使用说明 1. Prism Prism是基于简单的HTML,CS…

    html 2023年5月30日
    00
  • PHP截取汉字乱码问题解决方法mb_substr函数的应用

    下面是详细的“PHP截取汉字乱码问题解决方法mb_substr函数的应用”的攻略: 1. 问题背景 在使用PHP编写网页或者应用时,经常需要对字符串进行截取。但是对于包含中文字符的字符串,采用普通的截取方法会导致乱码的问题。这时可以使用PHP内置函数mb_substr()来解决这个问题。 2. mb_substr函数 mb_substr()函数是PHP中专门…

    html 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部