深色模式
5.6 设置任意属性的值(默认属性处理器)
Thymeleaf 提供了一个默认属性处理器,即便某个 HTML 属性在标准方言中没有对应的专用 th:* 处理器,也能通过它来设置该属性的值。
简单来说,对于任意属性(哪怕是自定义属性),你都可以直接用 th:属性名 的形式赋值,无需依赖 th:attr。
html
<!-- 为自定义属性 whatever 赋值,使用默认属性处理器 -->
<span th:whatever="${user.name}">...</span>如果 ${user.name} 的值是 John Apricot,处理后会生成:
html
<span whatever="John Apricot">...</span>关键说明
- 覆盖范围:默认属性处理器适配所有未定义专用
th:*修饰符的属性,包括:- HTML 原生但 Thymeleaf 未提供专用修饰符的属性;
- 完全自定义的属性(如
data-*、whatever等)。
- 写法优势:相比
th:attr="whatever=${user.name}",th:whatever="${user.name}"写法更直观、简洁,和专用属性修饰符(如th:class)的语法保持一致。 - 自定义属性场景示例:html处理后输出:
<!-- 设置自定义数据属性(替代 th:attr="data-user-id=${user.id}") --> <div th:data-user-id="${user.id}" th:data-role="${user.role}"> 用户信息 </div>html<div data-user-id="1001" data-role="admin"> 用户信息 </div>
总结
- 默认属性处理器让 Thymeleaf 支持
th:任意属性名的语法,无需为自定义/小众属性单独使用th:attr; - 语法规则和专用属性修饰符一致:
th:目标属性名="${表达式}",最终会渲染为目标属性名="表达式结果"; - 自定义属性(如
data-*)优先使用th:属性名写法,而非th:attr,代码可读性更高。
