11 注释和块
11.1. 标准注释
标准 HTML/XML 注释可以在百里叶模板中的任何位置使用。这些注释中的任何内容都不会被Thymeleaf处理,并且将被逐字复制到结果中:<!-- ... -->
<!-- User info follows -->
<div th:text="${...}">
...
</div>
11.2. 百里叶解析器级注释块
解析器级注释块是在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>
11.3. 仅百里叶原型注释块
Thymeleaf允许在模板静态打开(即作为原型)时将标记为注释的特殊注释块定义为注释,但在执行模板时,Thymeleaf将其视为正常标记。
<span>hello!</span>
<!--/*/
<div th:text="${...}">
...
</div>
/*/-->
<span>goodbye!</span>
Thymeleaf的解析系统将简单地删除和标记,但不会删除其内容,因此将不加注释。因此,在执行模板时,百里叶实际上会看到以下内容:<!--/*/
/*/-->
<span>hello!</span>
<div th:text="${...}">
...
</div>
<span>goodbye!</span>
与解析器级别的注释块一样,此功能与方言无关。
11.4. 合成标签th:block
百里香在标准方言中包含的唯一元素处理器(不是属性)是 。th:block
th:block
只是一个属性容器,允许模板开发人员指定他们想要的任何属性。百里香将执行这些属性,然后简单地使块(而不是其内容)消失。
因此,它可能很有用,例如,在创建每个元素需要多个表的迭代表时:<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(无需在内部添加禁止块),并且在浏览器中作为原型静态打开时仍然可以正常工作!<div>
<table>