这篇文章将更加全面详细的介绍thymeleaf的使用.thymeleaf是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎。
<强> thymeleaf介绍强>
简单说,Thymeleaf是一个跟速度,FreeMarker类似的模板引擎,它可以完全替代JSP。相较与其他的模板引擎,它有如下三个极吸引人的特点:
1。Thymeleaf在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持html原型,然后在html标签里增加额外的属性来达到模板+数据的展示方式。浏览器解释html时会忽略未定义的标签属性,所以Thymeleaf的模板可以静态地运行;当有数据返回到页面时,Thymeleaf标签会动态地替换掉静态内容,使页面动态显示。
2。Thymeleaf开箱即用的特性。它提供标准和春天标准两种方言,可以直接套用模板实现JSTL, OGNL表达式效果,避免每天套模板,该JSTL,改标签的困扰。同时开发人员也可以扩展和创建自定义的方言。
3。春天Thymeleaf提供标准方言和一个与SpringMVC完美集成的可选模块,可以快速的实现表单绑定,属性编辑器,国际化等功能。
<强>标准表达式语法强>
它们分为四类:
1。变量表达式
2.选择或星号表达式
3.文字国际化表达式
4.URL表达式
<强>变量表达式强>
变量表达式即OGNL表达式或弹簧EL表达式(在Spring术语中也叫模型属性)。如下所示:$ {session.user.name} <代码> 代码>
它们将以HTML标签的一个属性来表示:
& lt;跨越th:文本=" $ {book.author.name} "比; & lt;李th:每个="书:${书籍}”在>之前<强>选择(星号)表达式强>
选择表达式很像变量表达式,不过它们用一个预先选择的对象来代替上下文变量容器(map)来执行,如下:<代码> * {customer.name} 代码>
被指定的对象由th:对象属性定义:
& lt; div th:对象=" ${书}"比; … & lt;跨越th:文本=" *{标题}”祝辞…& lt;/span> … & lt;/div>>之前<>强文字国际化表达式强>
文字国际化表达式允许我们从一个外部文件获取区域文字信息(. properties),用键索引值,还可以提供一组参数(可选)。
# {main.title} # {message.entrycreated ($ {entryId})}可以在模板文件中找到这样的表达式代码:
& lt; table> … & lt; th:文本=" # {header.address.city} "在……& lt;/th> & lt; th:文本=" # {header.address.country} "在……& lt;/th> … & lt;/table>>之前<强> URL表达式强>
URL表达式指的是把一个有用的上下文或回话信息添加到URL,这个过程经常被叫做URL重写。
<代码> @}{/订单/列表
代码>URL还可以设置参数:
<代码> @{/订单/详细信息(id=$ {orderId})}
代码>相对路径:
<代码> @{…}/文档/报告代码>
让我们看这些表达式:
& lt;形式th: action=癅 {/createOrder}”比; & lt; a href=" https://www.yisu.com/zixun/main.html " rel=巴獠縩ofollow”th: href=" https://www.yisu.com/zixun/@{/主要}”rel=巴獠縩ofollow”在<强>变量表达式和星号表达有什么区别吗? 强>
如果不考虑上下文的情况下,两者没有区别;星号语法评估在选定对象上表达,而不是整个上下文
什么是选定对象?就是父标签的值,如下:
& lt; div th:对象=" $ {session.user} "比; & lt; p>名称:& lt;跨度th:文本=" * {firstName} "祝辞Sebastian灵活;/p> & lt; p>姓:& lt;跨度th:文本=" * {lastName} "祝辞Pepper灵活;/p> & lt; p>国籍:& lt;跨度th:文本=" *{国籍}"祝辞Saturn灵活;/p> & lt;/div>这是完全等价于:
& lt; div th:对象=" $ {session.user} "比; & lt; p>名称:& lt;跨度th:文本=" $ {session.user.firstName} "祝辞Sebastian灵活;/p> & lt; p>姓:& lt;跨度th:文本=" $ {session.user.lastName} "祝辞Pepperspringboot中thymeleaf模板使用详解