Skip to content

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 同等处理。

总结

  1. Thymeleaf 支持 data-th-* 这种 HTML5 标准的自定义属性语法,等价于传统的 th:*,更符合 HTML5 校验规则;
  2. 同时支持 {prefix}-{name} 格式的自定义标签语法(如 th-block),遵循 W3C 自定义元素规范;
  3. 新语法仅为补充,th:* 命名空间语法不会被废弃,可按需选择使用。