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属性标签还有很多,这里只是用了一小部分,有兴趣的可以在网上搜索一下。
想了解更多精彩内容,快来关注程序猿小董
2.若无意中侵犯到您的版权利益,请来信联系我们,我们会在收到信息后会尽快给予处理!
3.本站为纯属分享资源站点,网站内所有资源仅供学习交流之用,并请于下载后24小时内删除,如果喜欢,请支持正版,谢谢。
联系方式(QQ):291534978
暂无评论内容