Java基础总结之Thymeleaf详解

下面我将从以下几个方面完整讲解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日

相关文章

  • Word 文档出现乱码的处理方法

    当我们打开一个 Word 文档,却发现文本中出现了乱码时,这时就需要处理这个问题了。下面是具体的处理方法。 处理方法 方法一:转换编码 首先需要选中整个文档的内容,如果只选中一部分,可能会出现选中文本乱码,未选中文本正常的情况。 接下来需要转换文件编码。在 Word 菜单栏上依次点击“文件”->“选项”->“高级”->“Web 选项”-&g…

    html 2023年5月31日
    00
  • C# XML基础入门小结(XML文件内容增删改查清)

    下面我会详细讲解“C# XML基础入门小结(XML文件内容增删改查清)”的完整攻略。该攻略主要分为以下几个部分: 一、XML文件的基本概念 在讲解XML的操作之前,我们需要先了解一些基本概念。 1.1 XML是什么? XML(Extensible Markup Language)是一种标记语言,用于描述和传输数据。XML语言定义了一套标记规则,用这些标记来描…

    html 2023年5月30日
    00
  • 在 Vue 中使用 JSX 及使用它的原因浅析

    标题:在 Vue 中使用 JSX 及使用它的原因浅析 什么是JSX JSX是一种JavaScript语法扩展,可以使用类似XML的语法来编写JavaScript代码。 为什么要在Vue中使用JSX 在Vue中使用JSX可以让我们构建组件更加灵活且易于维护,以下是几个原因: 更加灵活的模板结构在使用模板语法我们有一些限制,如只能使用单个根元素包含整个模板,还有…

    html 2023年5月30日
    00
  • 深入Lumisoft.NET组件开发碰到乱码等问题的解决方法

    深入Lumisoft.NET组件开发碰到乱码等问题的解决方法 背景 Lumisoft是一个用于.NET应用程序的开源类库,提供了一些常用的协议和通用工具,如SMTP和POP3协议类、MIME编解码类等。 在开发过程中,有时会碰到一些奇怪的问题,比如乱码、编码错误等。这些问题可能是由于Lumisoft内部实现的细节导致的,或者是在使用Lumisoft时没有完全…

    html 2023年5月31日
    00
  • PHP simplexml_import_dom()函数讲解

    PHP simplexml_import_dom()函数讲解 简介 simplexml_import_dom()函数是PHP中用于将DOM节点转换为SimpleXMLElement对象的函数。DOM(文档对象模型)是一种允许开发人员在浏览器中对XML和HTML文档进行访问、操作的API。而SimpleXMLElement对象是XML文档的表示形式,它提供了一…

    html 2023年5月30日
    00
  • JSP页面传参出现中文乱码的解决方案

    JSP页面传参中文乱码是一个常见的问题,主要原因是JSP默认使用的编码方式为ISO-8859-1,而中文字符集使用的是UTF-8或GBK等编码方式。在使用中文参数时,需要将编码方式进行转换才能正常显示。 以下是解决方案: 第一步:修改JSP页面编码方式 在JSP页面中加入以下代码,将编码方式设置为UTF-8: <%@ page contentType=…

    html 2023年5月31日
    00
  • 详解XML中的代码注释书写方法

    下面是详解“详解XML中的代码注释书写方法”的完整攻略。 标准XML代码注释格式 在XML中,我们使用<!–和–>进行注释。这两个符号之间的内容都会被视为注释,在XML解析时会被忽略。 例如,在下面的示例中,我们使用XML注释来描述XML文件的版本、作者和创建时间: <?xml version="1.0" encod…

    html 2023年5月30日
    00
  • bin文件怎么打开查看?路由器备份出来的bin文件读取方法图解

    以下是关于如何打开和查看bin文件的攻略: bin文件怎么打开查看? bin文件是一种二进制文件,通常用于存储程序或数据。如果您需要查看bin文件的内容,可以按照以下步骤操作: 下载Hex编辑器:首先,您需要下载一个Hex编辑器,例如WinHex、HxD等。 打开Hex编辑器:安装完成Hex编辑器后,打开它。 打开bin文件:在Hex编辑器中,选择“文件”-…

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