Thymeleaf模板是什么?-深度揭秘

Thymeleaf 是一款用于渲染 XML/XHTML/HTML5内容的模板引擎。它与 JSP,Velocity,FreeMaker 等模板引擎类似,也可以轻易地与 Spring MVC 等 Web 框架集成。与其它模板引擎相比,Thymeleaf 最大的特点是,即使不启动 Web 应用,也可以直接在浏览器中打开并正确显示模板页面。

Thymeleaf 简介

Thymeleaf 是新一代 Java 模板引擎,支持 HTML 原型,以直接被浏览器打开,此时浏览器会忽略未定义的 Thymeleaf 标签属性,展示 thymeleaf 模板的静态页面效果。当在应用程序中会动态地替换掉页面设置的标签属性。

Thymeleaf 的特点

动静结合:Thymeleaf 既可以直接使用浏览器打开,查看页面的静态效果,也可以通过 Web 应用程序进行访问,查看动态页面效果。开箱即用:Thymeleaf 提供了 Spring 标准方言以及一个与 SpringMVC 完美集成的可选模块,可以快速地实现表单绑定、属性编辑器、国际化等功能。多方言支持:它提供了 Thymeleaf 标准和 Spring 标准两种方言,可以直接套用模板实现 JSTL、 OGNL 表达式;必要时,开发人员也可以扩展和创建自定义的方言。与 SpringBoot 完美整合:SpringBoot 为 Thymeleaf 提供了的默认配置,并且还为 Thymeleaf 设置了视图解析器,因此 Thymeleaf 可以与 Spring Boot 完美整合。

Thymeleaf 通过在 html 标签中,增加额外属性来达到“模板+数据”的展示方式

IDEA新创建HTML文件是这样的:

要想使用 Thymeleaf 之前,首先要在页面的 html 标签中声明名称空间,可避免编辑器出现 html 验证错误。

xmlns:th=”http://www.thymeleaf.org”

Thymeleaf 作为一种模板引擎,它拥有自己的语法规则。Thymeleaf 语法分为以下2 类:

标准表达式语法th 属性

标准表达式语法

hymeleaf 模板引擎支持多种表达式:

变量表达式:${…}选择变量表达式:*{…}链接表达式:@{…}国际化表达式:#{…}片段引用表达式:~{…}

变量表达式

这里变量表达式和其他模板类似,可以使用表达式具有以下功能:

获取对象的属性和方法使用内置的基本对象,获取内置对象的属性,调用内置对象的方法。如上下文对象ctx,上下文语言环境locale,请求对象HttpServletRequest,响应对象HttpServletResponse等。使用内置的工具对象,如字符串工具对象,数字工具对象,日期工具对象等。

选择变量表达式

变量表达式与 th:object 的配合使用。当使用 th:object 存储一个对象后,我们可以在其后代中使用选择变量表达式(*{…})获取该对象中的属性,其中,“*”即代表该对象。

链接表达式

链接都可以用链接表达式(@{…}),链接表达式的形式结构如下:无参请求:@{/xxx}有参请求:@{/xxx(k1=v1,k2=v2)}。

国际化表达式

消息表达式一般用于国际化的场景。

th:text=”#{message}”

片段引用表达式

片段引用表达式用于在模板页面中引用其他的模板片段,该表达式支持以下2 中语法结构:

推荐:~{templatename::fragmentname}支持:~{templatename::#id}

templatename:模版名,fragmentname:片段名,Thymeleaf 通过 th:fragment 声明定义代码块,即:th:fragment=”fragmentname”。id:HTML 的 id 选择器,使用时要在前面加上# 号,不支持 class 选择器。

我们可以将公共页面片段抽取出来,存放到一个独立的页面中,然后在其他页面使用片段表达式进行引用。

hymeleaf 在抽取和引入公共页面片段时,还可以进行参数传递。

我们可以通过以下2 种方式,将参数传入到被引用的页面片段中:

模板名::选择器名或片段名(参数1=参数值1,参数2=参数值2)模板名::选择器名或片段名(参数值1,参数值2)

在使用参数时可以使用变量表达式使用这些参数。

th 属性

Thymeleaf 还提供了大量的 th 属性,这些属性可以直接在 HTML 标签中使用。

th属性标签还有很多,这里只是用了一小部分,有兴趣的可以在网上搜索一下。

想了解更多精彩内容,快来关注程序猿小董

微信扫描下方的二维码阅读本文,关注微信公众号【微笑面对设计】每日定时更新

        
© 版权声明
THE END
喜欢就支持一下吧
点赞8赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容