Bootstrap

可能是最全的Thymeleaf参考手册(十一):注释和块

 

Thymeleaf模板中的任何位置都可以使用标准的HTML / XML注释 <!-- ... -->。这些注释中的所有内容均不会被Thymeleaf处理,并将一字不差的复制到结果页面:

<!-- User info follows -->
<div th:text="${...}">
  ...
</div>

 

 

Thymeleaf解析器级注释块

 

解析器级别的注释块是在Thymeleaf对其进行解析时,将从模板中简单删除的代码。他们看起来像这样:

<!--/* This code will be removed at Thymeleaf parsing time! */-->

Thymeleaf将删除 <!--/* 和 */--> 之间的所有内容,因此,当模板静态打开时,这些注释块也可用于显示代码,因为Thymeleaf在处理模板时会将其删除:

<!--/*--> 
  <div>
     you can see me only before Thymeleaf processes me!
  </div>
<!--*/-->

 

例如,对于带有很多 <tr> 的表格进行原型制作可能会非常方便:

<table>
   <tr th:each="x : ${xs}">
     ...
   </tr>
   <!--/*-->
   <tr>
     ...
   </tr>
   <tr>
     ...
   </tr>
   <!--*/-->
</table>

 

 

Thymeleaf仅原型注释块

 

Thymeleaf允许定义特殊注释块,当模板静态打开(即作为原型)时,标记为注释,但Thymeleaf在执行模板时将其视为正常标记。

<span>hello!</span>
<!--/*/
  <div th:text="${...}">
    ...
  </div>
/*/-->
<span>goodbye!</span>

 

Thymeleaf的解析系统将仅删除 <!--/*/ 和 /*/-->标记,但不会删除其内容,因此不会对其进行注释。因此,在执行模板时,Thymeleaf实际上会看到以下内容:

<span>hello!</span>
​
  <div th:text="${...}">
    ...
  </div>
​
<span>goodbye!</span>

 

与解析器级注释块一样,此功能与方言无关。

 

th:block标签

 

Thymeleaf的标准方言中唯一的元素处理器(不是属性)是 th:block

th:block 仅是一个属性容器,允许模板开发人员指定所需的任何属性。Thymeleaf将执行这些属性,然后简单地使该块(而不是其内容)消失。

因此,例如在创建 <tr> 每个表都需要多个表的迭代表时,它可能会很有用:

<table>
  <th:block th:each="user : ${users}">
    <tr>
        <td th:text="${user.login}">...</td>
        <td th:text="${user.name}">...</td>
    </tr>
    <tr>
        <td colspan="2" th:text="${user.address}">...</td>
    </tr>
  </th:block>
</table>

 

与仅原型注释块结合使用时特别有用:

<table>
    <!--/*/ <th:block th:each="user : ${users}"> /*/-->
    <tr>
        <td th:text="${user.login}">...</td>
        <td th:text="${user.name}">...</td>
    </tr>
    <tr>
        <td colspan="2" th:text="${user.address}">...</td>
    </tr>
    <!--/*/ </th:block> /*/-->
</table>

 

请注意,此解决方案如何使模板成为有效的HTML(无需在 <table> 内添加隐藏的<div>),并且当在浏览器中作为原型静态打开时,仍可以正常使用!

 

 

 

                         公众号回复以下关键字,获取更多资源

 

SpringCloud进阶之路 | Java 基础 | 微服务 | JAVA WEB | JAVA 进阶 | JAVA 面试 | MK 精讲

 

 

 

笔者开通了个人微信公众号【银河架构师】,分享工作、生活过程中的心得体会,填坑指南,技术感悟等内容,会比博客提前更新,欢迎订阅。

 

;