Thymeleaf 模板的使用

Thymeleaf是现代化服务器端的Java模板引擎,不同与JSP和FreeMarker,Thymeleaf的语法更加接近HTML,并且也有不错的扩展性。详细资料可以浏览官网。本文主要介绍Thymeleaf模板的使用说明。

模板(template fragments)###

定义和引用模板

日常开发中,我们经常会将导航栏,页尾,菜单等部分提取成模板供其它页面使用。

在Thymeleaf 中,我们可以使用th:fragment属性来定义一个模板。

我们可以新建一个简单的页尾模板,如:/WEB-INF/templates/footer.html,内容如下:



  
    
© 2016 xxx

上面定义了一个叫做copyright的片段,接着我们可以使用th:include或者th:replace属性来使用它:


  ...
  

其中th:include中的参数格式为templatename::[domselector],
其中templatename是模板名(如footer),domselector是可选的dom选择器。如果只写templatename,不写domselector,则会加载整个模板。

当然,这里我们也可以写表达式:

模板片段可以被包含在任意th:*属性中,并且可以使用目标页面中的上下文变量。

不通过th:fragment引用模板

通过强大的dom选择器,我们可以在不添加任何Thymeleaf属性的情况下定义模板:

...
© xxxxxx
...

通过dom选择器来加载模板,如id为copy-section


 ...
 

th:include 和 th:replace区别

th:include 是加载模板的内容,而th:replace则会替换当前标签为模板中的标签

例如如下模板:

© 2016

我们通过th:include 和 th:replace来加载模板

 
  

返回的HTML如下:

 
   
© 2016
© 2016

模板参数配置###

th:fragment定义模板的时候可以定义参数:

...

在 th:include 和 th:replace中我们可以这样传参:

...
...

此外,定义模板的时候签名也可以不包括参数:

,我们任然可以通过
...
这种方式调用模板。这其实和
起到一样的效果

th:assert 断言

我们可以通过th:assert来方便的验证模板参数

...

th:remove 删除代码###

假设我们有一个产品列表模板:

NAME PRICE IN STOCK COMMENTS
Onions 2.41 yes 2 comment/s view

这时一个很常规的模板,但是,当我们直接在浏览器里面打开它(不(不使用Thymeleaf ),它实在不是一个很好的原型。因为它的表格中只有一行,而我们的原型需要更饱满的表格。

如果我们直接添加了多行,原型是没有问题了,但通过Thymeleaf输出的HTML又包含了这些事例行。

这时通过th:remove属性,可以帮我们解决这个两难的处境,

NAME PRICE IN STOCK COMMENTS
Onions 2.41 yes 2 comment/s view
Blue Lettuce 9.55 no 0 comment/s
Mild Cinnamon 1.99 yes 3 comment/s view

其中th:remove的参数有如下几种:

  • all 删除当前标签和其内容和子标签
  • body 不删除当前标签,但是删除其内容和子标签
  • tag 删除当前标签,但不删除子标签
  • all-but-first 删除除第一个子标签外的其他子标签
  • none 啥也不干

当然,我们也可以通过表达式来传参,
Link text not to be removed


以上为Thymeleaf中模板的一些用法,各位看官请点赞。

你可能感兴趣的:(Thymeleaf 模板的使用)