一、Thymeleaf 简介
1.1 什么是 Thymeleaf?
Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎,能够处理 HTML,XML,JavaScript,CSS 甚至纯文本。
Thymeleaf 的主要目标是提供一种优雅且高度可维护的模板创建方式。为此,它以“自然模板”的概念为基础,以不影响模板用作设计原型的方式将其逻辑注入模板文件。这样可以改善设计沟通,并缩小设计团队与开发团队之间的差距。
Thymeleaf 的设计也从一开始就考虑了 Web 标准-特别是 HTML5 –如果需要,您可以创建完全验证的模板。
1.2 Thymeleaf 可以处理哪种模板?
开箱即用的 Thymeleaf 允许您处理六种模板,每种模板都称为 Template Mode :
- HTML
- XML
- TEXT
- JAVASCRIPT
- CSS
- RAW
有两种标记模板模式(HTML
和XML
),三种文本模板模式(TEXT
,JAVASCRIPT
和CSS
)和无操作模板模式(RAW
)。
HTML
模板模式将允许任何类型的 HTMLImporting,包括 HTML5,HTML 4 和 XHTML。将不执行任何验证或格式正确性检查,并且模板代码/结构将在输出中得到最大程度的尊重。
XML
模板模式将允许 XMLImporting。在这种情况下,代码应该是格式正确的-没有未关闭的标签,没有未引用的属性等,并且如果发现格式错误,则解析器将引发异常。请注意,不会执行* validation *(针对 DTD 或 XML 模式)。
TEXT
模板模式将允许对非标记性质的模板使用特殊语法。此类模板的示例可能是文本电子邮件或模板化文档。请注意,HTML 或 XML 模板也可以处理为TEXT
,在这种情况下,它们不会被解析为标记,并且每个标签,DOCTYPE,Comments 等都将被视为纯文本。
JAVASCRIPT
模板模式将允许在 Thymeleaf 应用程序中处理 JavaScript 文件。这意味着能够以与在 HTML 文件中相同的方式使用 JavaScript 文件中的模型数据,但是具有特定于 JavaScript 的集成,例如专用转义或自然脚本。 JAVASCRIPT
模板模式被视为文本模式,因此使用与TEXT
模板模式相同的特殊语法。
CSS
模板模式将允许处理 Thymeleaf 应用程序中涉及的 CSS 文件。与JAVASCRIPT
模式类似,CSS
模板模式也是* text *模式,并使用TEXT
模板模式中的特殊处理语法。
RAW
模板模式根本不会处理模板。它旨在用于将未修改的资源(文件,URL 响应等)插入正在处理的模板中。例如,可以安全地知道将不会执行这些资源可能包含的任何 Thymeleaf 代码,而将 HTML 格式的外部不受控制的资源包含在应用程序模板中。
1.3 方言:标准方言
Thymeleaf 是一个非常可扩展的模板引擎(实际上,它可以称为* template engine framework *),它允许您定义和自定义将模板处理到详细级别的方式。
将某种逻辑应用于标记工件(如果模板不是标记的话,标记,一些文本,Comments 或仅占位符)的对象称为* processor *,以及一组这些处理器-也许还有一些额外的工件-通常是“方言”的组成部分。开箱即用的 Thymeleaf 核心库提供了一种称为 Standard Dialect 的方言,对于大多数用户来说,这已经足够了。
请注意,方言实际上可以没有处理器,而完全由其他类型的工件组成,但是处理器无疑是最常见的用例。
本教程介绍了标准方言。即使未明确提及,您在接下来的页面中将学习的每个属性和语法功能都由该方言定义。
当然,如果用户想在利用 Library 的高级功能的同时定义自己的处理逻辑,则可以创建自己的方言(甚至扩展标准方言)。 Thymeleaf 也可以配置为一次使用多种方言。
官方的 thymeleaf-spring3 和 thymeleaf-spring4 集成软件包都定义了一种称为“ SpringStandard Dialect”的方言,该方言与 Standard Dialect 大致相同,但进行了较小的改动以更好地利用 Spring Framework 中的某些功能(例如,方法是使用 Spring Expression Language 或 SpringEL 而不是 OGNL)。因此,如果您是 Spring MVC 用户,那么您就不会浪费时间,因为您在此处学习的几乎所有内容都将在 Spring 应用程序中使用。
标准方言的大多数处理器都是属性处理器。这使浏览器甚至在处理之前也能正确显示 HTML 模板文件,因为它们将简单地忽略其他属性。例如,尽管使用标签库的 JSP 可能包含一段代码,但这些代码无法直接由浏览器显示:
<form:inputText name="userName" value="${user.name}" />
…Thymeleaf 标准方言将使我们能够通过以下方式实现相同的功能:
<input type="text" name="userName" value="James Carrot" th:value="${user.name}" />
这不仅可以由浏览器正确显示,而且还允许我们(可选)在其中指定一个值属性(在这种情况下为“ James Carrot”),当在浏览器中静态打开原型时将显示该属性,并且将被模板处理期间对${user.name}
求值所得的值替换。
这可以帮助您的设计人员和开发人员处理完全相同的模板文件,并减少将静态原型转换为工作模板文件所需的工作。执行此操作的功能是称为自然模板的功能。
最新评论
Spring Cloud Alibaba 微服务架构实战 https://pan.baidu.com/s/1jF5voFRoeF0lYAzAPBWSbw?pwd=chqk
命令: nload
真是个良心站点哇,大公无私,爱了爱了
还可以直接搞一张映射表,存 uid | time | source_index, 第一次直接查对应的 time 选出前100, 第二次直接用 CompleteFuture 去分别用 source_in
干得漂亮,多个朋友堵条路
2021.2.2版本的不适用吧
现在还可以用么
激活码有用,感谢分享