springboot中thymeleaf模板使用详解

  

这篇文章将更加全面详细的介绍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} "祝辞Pepper

springboot中thymeleaf模板使用详解