深色模式
5.7 对HTML5友好的属性名和元素名的支持
Thymeleaf 还支持一种截然不同的语法,能以更贴合 HTML5 规范的方式将处理器应用到模板中。
html
<table>
<tr data-th-each="user : ${users}">
<td data-th-text="${user.login}">...</td>
<td data-th-text="${user.name}">...</td>
</tr>
</table>data-{prefix}-{name} 这种语法是 HTML5 中定义自定义属性的标准方式,无需开发者使用 th:* 这类带命名空间的属性名。Thymeleaf 会自动为所有方言(不只是标准方言)启用这种语法——也就是说,不仅 th 前缀,其他自定义方言的前缀也能通过 data-{前缀}-{名称} 来使用。
除此之外,还有一种符合 W3C 自定义元素规范(属于 W3C Web Components 规范的一部分)的自定义标签语法:{prefix}-{name}。比如后续章节会讲解的 th:block 元素(也可以写成 th-block),就是这种语法的典型应用。
重要提示:这种 HTML5 友好的语法只是对带命名空间的 th:* 语法的补充,而非替代。Thymeleaf 完全没有计划在未来弃用 th:* 命名空间语法——你可以根据项目的编码规范、团队习惯自由选择使用哪种语法,两种写法会被 Thymeleaf 同等处理。
总结
- Thymeleaf 支持
data-th-*这种 HTML5 标准的自定义属性语法,等价于传统的th:*,更符合 HTML5 校验规则; - 同时支持
{prefix}-{name}格式的自定义标签语法(如th-block),遵循 W3C 自定义元素规范; - 新语法仅为补充,
th:*命名空间语法不会被废弃,可按需选择使用。
