Java模板引擎Thymeleaf基本语法详解

 更新时间:2023年08月08日 09:04:06   作者:Cosolar  
当开发Web应用程序时,我们通常需要使用模板引擎来构建和呈现动态内容,Thymeleaf是一个功能强大的Java模板引擎,它提供了丰富的表达式和标签,使得数据绑定、条件判断、循环迭代等操作变得轻松而灵活,本文就简单的给大家介绍一下Thymeleaf基本语法

Thymeleaf在Java生态系统中非常受欢迎,并与Spring框架紧密集成。它具有丰富的扩展和第三方库,可以提供各种功能。Thymeleaf在服务器端生成HTML页面,并将最终的结果发送给客户端浏览器。页面中的内容在每次请求时都会由服务器动态生成。和Vue这些不同,Vue在客户端浏览器中动态渲染页面。它可以基于数据动态地更新视图,而无需每次请求都向服务器发送数据。

Thymeleaf 3.1.2.RELEASE is the latest version. It requires Java SE 8 or newer.

一、Thymeleaf 表达式语言的使用

Thymeleaf 表达式语言(简称为EL)是 Thymeleaf 强大功能的基础之一,它使得在模板中可以轻松地插入和操作动态数据。下面是几个常用的 Thymeleaf 表达式:

  • 变量表达式:${variable}

    • 用于在模板中输出变量的值。
    • 示例:<h1 th:text="${pageTitle}">Page Title</h1>
  • 选择表达式:*{expression}

    • 用于从对象中选择属性或调用方法。
    • 示例:<p th:text="*{user.name}">Default Name</p>
  • 链接表达式:@{url}

    • 用于生成链接或动态 URL。支持相对路径和绝对路径。
    • 示例:<a th:href="@{/product/{id}(id=1)}">Product Details</a>
  • 消息表达式:#[code]

    • 用于国际化支持,根据当前环境选择合适的文本。
    • 示例:<span th:text="#{welcome.message}">Welcome!</span>
  • 内联表达式:[[...]]

    • 用于 JavaScript 代码块内的 Thymeleaf 表达式。
    • 示例:<script th:inline="javascript"> var name = '[[${name}]]'; </script>

二、Thymeleaf 标签的基本用法

Thymeleaf 提供了一系列标签和属性,使得开发者能够更灵活地操作 HTML 元素。下面是一些常用的 Thymeleaf 标签:

  • th:text:用于设置元素的文本内容。

    • 示例:<h1 th:text="${pageTitle}">Page Title</h1>
  • th:if 和 th:unless:用于条件判断并渲染 HTML 元素。

    • 示例:<p th:if="${isUserLoggedIn}">Hello, User!</p>
    • 示例:<p th:unless="${isUserLoggedIn}">Please login to continue.</p>
  • th:each:用于循环遍历集合或数组,并渲染 HTML 元素。

    • 示例:<ul><li th:each="item : ${items}" th:text="${item}"></li></ul>
  • th:href 和 th:src:用于设置链接地址和资源路径。

    • 示例:<a th:href="@{/product/{id}(id=1)}">Product Details</a>
    • 示例:<img th:src="@{/images/myimage.jpg}" alt="My Image" />
  • th:attr:用于设置 HTML 元素的属性。

    • 示例:<input type="text" th:attr="placeholder=#{username.placeholder}" />

三、在模板中使用属性和变量

Thymeleaf 允许在模板中使用属性和变量,以插入动态数据。下面是几个常见的用法:

  • 使用属性:通过 HTML 元素的属性来设置动态值。

    • 示例:<h1 th:text="${pageTitle}">Page Title</h1>
  • 使用变量:使用 ${variable} 语法将变量的值插入到模板中。

    • 示例:<p th:text="${user.name}">Default Name</p>
  • 在元素内部使用属性和变量:可以在标签的内容或属性值中使用表达式语言。

    • 示例:<a th:href="@{/product/${productId}(productId=${product.id})}">Product Details</a>

通过 Thymeleaf 表达式语言和标签,您可以轻松地在模板中添加动态数据和逻辑,并根据需要进行条件判断、循环遍历等操作。 好的,下面我将为您提供示例来说明数据绑定、渲染和属性绑定与条件判断的用法。

四、在控制器中传递数据到模板

@Controller
public class MyController {
    @GetMapping("/hello")
    public String hello(Model model) {
        String message = "Hello, Thymeleaf!";
        model.addAttribute("message", message);
        return "hello-template";
    }
}

在这个示例中,控制器通过 Model 对象的 addAttribute 方法将数据(message)传递给模板。然后,控制器返回字符串 "hello-template",表示使用名为 hello-template 的 Thymeleaf 模板来进行渲染。

1、使用 Thymeleaf 表达式渲染数据

<h1 th:text="${message}"></h1>

这个示例中,通过 ${message} 表达式可以在模板中渲染控制器传递过来的 message 数据。

2、属性绑定和条件判断

<p th:class="${status eq 'active'} ? 'active' : ''">Content</p>

这个示例中,根据条件 ${status eq 'active'} 判断,如果条件成立,则给 <p> 元素添加 active 类;否则,不添加任何类。

我演示了数据绑定和渲染,以及属性绑定和条件判断的用法。您可以根据具体需求,在控制器中传递数据给模板,并使用 Thymeleaf 表达式根据数据进行渲染和操作。请根据实际情况修改示例中的变量名和条件,以适应您的应用程序逻辑。

到此这篇关于Java模板引擎Thymeleaf基本语法详解的文章就介绍到这了,更多相关Java Thymeleaf基本语法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中的CompletableFuture原理与用法

    Java中的CompletableFuture原理与用法

    CompletableFuture 是由Java8引入的,这让我们编写清晰可读的异步代码变得更加容易,该类功能比Future 更加强大,在Java中CompletableFuture用于异步编程,异步通常意味着非阻塞,运行任务单独的线程,与主线程隔离,这篇文章介绍CompletableFuture原理与用法,一起看看吧
    2024-01-01
  • Java中HashMap和Hashtable的区别小结

    Java中HashMap和Hashtable的区别小结

    本文主要介绍了Java中HashMap和Hashtable的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • Java中JSON数据操作与处理全面指南

    Java中JSON数据操作与处理全面指南

    JSON(JavaScript Object Notation)是数据交换的轻量级格式,它以易于人类阅读和机器解析的方式组织数据,基于键值对,在Java开发中,处理JSON数据通常涉及使用Jackson、Gson、Fastjson等库,本文给大家介绍JSON数据操作与处理全面指南,感兴趣的朋友一起看看吧
    2024-10-10
  • Java获取链接上的参数三种方法举例

    Java获取链接上的参数三种方法举例

    在Java中,我们经常需要从URL链接中获取参数,下面这篇文章主要给大家介绍了关于Java如何获取链接上参数的三种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • 详解RabbitMQ延迟队列的基本使用和优化

    详解RabbitMQ延迟队列的基本使用和优化

    这篇文章主要介绍了详解RabbitMQ延迟队列的基本使用和优化,延迟队列中的元素都是带有时间属性的。延迟队列就是用来存放需要在指定时间被处理的元素的队列,需要的朋友可以参考下
    2023-05-05
  • 使用Java编写串口程序的流程步骤

    使用Java编写串口程序的流程步骤

    本文将介绍如何使用Java编写串口程序,包括串口的基本概念、Java串口通信API的使用、串口程序的开发流程以及一些常见问题的解决方法等,希望通过本文的介绍,读者能够对使用Java编写串口程序有一个基本的了解,并能够实践和应用于实际项目中
    2023-11-11
  • Java JVM字节码指令集总结整理与介绍

    Java JVM字节码指令集总结整理与介绍

    本节将会着重介绍一下JVM中的指令集、Java是如何跨平台的、JVM指令集参考手册等内容。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • JavaWeb实现学生信息管理系统(2)

    JavaWeb实现学生信息管理系统(2)

    这篇文章主要介绍了JavaWeb实现学生信息管理系统的第二篇,实现学生管理系统的查找和添加功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java反射如何获取字段属性值

    Java反射如何获取字段属性值

    这篇文章主要介绍了Java反射如何获取字段属性值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java面试必备之JMM高并发编程详解

    Java面试必备之JMM高并发编程详解

    高并发(High Cuncurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并发处理很多请求
    2022-07-07

最新评论