Thymeleaf是⾯向Web和独⽴环境的现代服务器端Java模板引擎,能够处 理HTML,XML,JavaScript,CSS甚⾄纯⽂本。

Thymeleaf旨在提供⼀个优雅的、⾼度可维护的创建模板的⽅式。 为了实 现这⼀⽬标,Thymeleaf建⽴在⾃然模板的概念上,将其逻辑注⼊到模板 ⽂件中,不会影响模板设计原型。 这改善了设计的沟通,弥合了设计和 开发团队之间的差距。

Thymeleaf从设计之初就遵循Web标准——特别是HTML5标准 ,如果需 要,Thymeleaf允许您创建完全符合HTML5验证标准的模板。

Thymeleaf能处理哪些模版

开箱即⽤,Thymeleaf可让处理六种类型的模板,每种类型的模板称为模 板模式: HTML XML TEXT JAVASCRIPT CSS RAW 这六种模版模式包含两种标记模板模式(HTML和XML),三种⽂本模板 模式(TEXT,JAVASCRIPT和CSS)和⼀个⽆操作模板模式(RAW)。 HTML模板模式将允许任何类型的HTML输⼊,包括HTML5,HTML 4和 XHTML。Thymeleaf在html5⾮验证模式和验证模式下都能正确执⾏,并 且在输出结果中最⼤程度的遵循模板代码/结构。 XML模板模式将允许XML输⼊。在这种情况下,代码预期形式良好 - 没有 未关闭的标签,没有引⽤属性等,如果出现⾮法XML输⼊,解析器将抛出 异常。请注意,Thymeleaf不会执⾏XML验证(针对DTD或XML架构)。 TEXT模板模式将允许对⾮标记特性的模板使⽤特殊语法。例如:⽂本电 ⼦邮件或模板⽂档。请注意,HTML或XML模板也可以作为TEXT处理, 在这种情况下,它们将不会被解析为标记,并且每个标签如: DOCTYPE,注释等都将被视为纯⽂本。 JAVASCRIPT模板模式将允许在Thymeleaf应⽤程序中处理JavaScript⽂ 件。这意味着可以在JavaScript⽂件中像与HTML⽂件中⼀样的⽅式使⽤ 模型数据,但可以使⽤特定于JavaScript的集成,例如专⻔的转义或⾃然 脚本。 JAVASCRIPT模板模式被认为是⽂本模式,因此使⽤与TEXT模板 模式相同的特殊语法。

CSS模板模式将允许处理涉及Thymeleaf应⽤程序的CSS⽂件。与 JAVASCRIPT模式类似,CSS模板模式也是⽂本模式,并使⽤TEXT模板 模式下的特殊处理语法。 RAW模板模式根本不会处理模板。它⽤于将未经修改的资源(⽂件, URL响应等)插⼊正在处理的模板中。例如,HTML格式的外部不受控制 的资源可以包含在应⽤程序模板中,安全地知道这些资源可能包含的任何 Thymeleaf代码将不会被执⾏。

Thymeleaf标准⽅⾔ Thymeleaf是⼀个扩展性很强的模板引擎(实际上它可以称为模板引擎框 架),Thyme Leaf允许您⾃定义模板,并且很好的处理该模版的细节。 将⼀些逻辑应⽤于标记组件(标签,某些⽂本,注释或只有占位符)的⼀ 个对象被称为处理器,通常这些处理器的集合以及⼀些额外的组件就组成 了Thymeleaf⽅⾔。 开箱即⽤,Thymeleaf的核⼼库提供了⼀种称为标准 ⽅⾔的⽅⾔,这对⼤多数⽤户来说应该是⾜够的。 请注意,⽅⾔实际上可能不包含处理器,并且完全由其他类型的组 件构成,但处理器绝对是最常⻅的⽤例。 本教程涵盖Thyme Leaf的标准⽅⾔。 您将在后⾯章节中的每个属性和语 法功能都由Thyme Leaf标准⽅⾔定义,即使没有明确提及。 当然,如果⽤户希望在使⽤标准⽅⾔库的⾼级功能的同时还想定义⾃⼰的 处理逻辑,您也可以创建⾃⼰的⽅⾔(甚⾄扩展标准的⽅⾔)。您 也可 以将Thymeleaf配置为⼀次使⽤⼏种⽅⾔。 官⽅的thymeleaf-spring3和thymeleaf-spring4的整合包⾥都定义了 ⼀种称为“spring标准⽅⾔”的⽅⾔,该⽅⾔与“Thyme Leaf标准⽅ ⾔”⼤致相同,但是对于Spring框架中的某些功能(例如,通过使⽤ SpringEL表达式代替OGNL表达式)做了⼀些简单的调整。 所以如 果你是⼀个Spring MVC⽤户,使⽤ThymeLeaf并不会浪费你的时 间,因为你在这⾥学到的所有东⻄都将可以应⽤到你的Spring应⽤ 程序中。 ThymeLeaf标准⽅⾔中的⼤多数处理器都是是属性处理器。 这样,即使 在模版未被处理之前,浏览器也可以正确地显示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}的值代替value的真实值。 这有助于您的设计师和开发⼈员处理相同的模板⽂件,并减少将静态原型 转换为⼯作模板⽂件所需的⼯作量。 具备这种能⼒的模版我们称为⾃然 模板。

[thymeleaf] - 1.Thymeleaf是什么的更多相关文章

  1. 【Thymeleaf】Thymeleaf模板对html实时刷新

    解决方案 spring: thymeleaf: cache: false 修改完html代码后Ctrl+Shift+F9,重新编译即可刷新页面内容!

  2. 【Thymeleaf】Thymeleaf模板对没有结束符的HTML5标签解析出错的解决办法

    解决方案 spring: thymeleaf: mode: LEGACYHTML5 <dependency> <groupId>net.sourceforge.nekohtml ...

  3. (一)Thymeleaf用法——Thymeleaf简介

    1. thymeleaf认识 参考官方文档(Project version: 3.0.5.RELEASE)   1.1 介绍 Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎,能 ...

  4. Spring Boot整合Thymeleaf及Thymeleaf页面基本语法

    引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  5. Layui + thymeleaf org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: " 错误解决

    解决方法: 1.将layui的代码移动到新的js文件当中,用template模板引擎的方式引入: <script th:src="@{/static/js/facility/mover ...

  6. thymeleaf 基本表达式

    Thymeleaf 基本表达式 如需了解thymeleaf以及thymeleaf整合spring,请参考<Thymeleaf模板引擎使用>.<Thymeleaf 集成spring&g ...

  7. SpringMVC4+thymeleaf3的一个简单实例(篇二:springMVC与thymeleaf的整合)

    延续前篇内容. 开始之前,我们首先要准备以下12个jar文件:spring-aop-4.3.3.RELEASE.jarspring-beans-4.3.3.RELEASE.jarspring-cont ...

  8. Springboot与Thymeleaf模板引擎整合基础教程(附源码)

    前言 由于在开发My Blog项目时使用了大量的技术整合,针对于部分框架的使用和整合的流程没有做详细的介绍和记录,导致有些朋友用起来有些吃力,因此打算在接下来的时间里做一些基础整合的介绍,当然,可能也 ...

  9. Spring boot(三)整合mybaties+thymeleaf实现基础crud

    工程结构: 首先在pom文件中引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xml ...

随机推荐

  1. 支持向量机SVM 参数选择

    http://ju.outofmemory.cn/entry/119152 http://www.cnblogs.com/zhizhan/p/4412343.html 支持向量机SVM是从线性可分情况 ...

  2. mysql 查看版本和是否支持分区

    命令行界面: 查看版本: select version(); 结果: +------------+| version() |+------------+| 5.6.31-log |+--------- ...

  3. python二 总结--函数-- 装饰器

    装饰器是什么? 有什么用? 为什么要用? 真的有用吗? 1.装饰器: 装饰器: 定义:本质是函数,(装饰其他函数)就是为其他函数添加附加功能. 原则:1.不能修改被装饰的函数的源代码          ...

  4. QNetworkAccessManager

    [1]头文件 想要利用QNetworkAccessManager类,必须在pro文件中添加对应库network,如下: QT += network 如果利用的VS + QT开发环境,请参考随笔< ...

  5. 变量为空代表false

    name = ''#名字为空即代表False while not name:#not name=False即 真,将执行循环体 print('Enter your name:') name = inp ...

  6. double,失去精度

    double,失去精度: amount.doubleValue() * 使用 BigDecimal: public static double add(double d1,double d2){ Bi ...

  7. JDBC (29)

    1.JDBC:就是一套API,由sun公司定义类或者定义的接口.(全称 java database connectivity:是Java访问数据库的标准规范),Java提供访问数据库规范称为JDBC, ...

  8. localstorage跨域解决方案

    localstorage也存在 跨域的问题, [解决思路如下] 在A域和B域下引入C域,所有的读写都由C域来完成,本地数据存在C域下; 因此 A哉和B域的页面必定要引入C域的页面; 当然C域最好是主域 ...

  9. python中的logger模块

    logger 提供了应用程序可以直接使用的接口handler将(logger创建的)日志记录发送到合适的目的输出filter提供了细度设备来决定输出哪条日志记录formatter决定日志记录的最终输出 ...

  10. The Little Prince-12/10

    The Little Prince-12/10 审判自己比审判别人难多了.如果你成功地正确审判了自己,那么你就是一个真正的智者了. ————确实,正视自己是非常难的人生准则.以人为镜,可以明得失,从别 ...