Skip to content

5.3 一次性设置多个属性值

Thymeleaf 提供了两个特殊的属性——th:alt-titleth:lang-xmllang,它们可以一次性为两个不同的属性设置相同的值。具体来说:

  • th:alt-title 会同时设置 alttitle 两个属性;
  • th:lang-xmllang 会同时设置 langxml:lang 两个属性。

以我们 GTVG 网站的首页为例,原本我们需要这样写(用 th:attr 同时设置多个属性):

html
<img src="../../images/gtvglogo.png" 
     th:attr="src=@{/images/gtvglogo.png},title=#{logo},alt=#{logo}" />

或者等价的、用多个专用属性修饰符的写法:

html
<img src="../../images/gtvglogo.png" 
     th:src="@{/images/gtvglogo.png}" th:title="#{logo}" th:alt="#{logo}" />

而通过 th:alt-title,我们可以简化成这样:

html
<img src="../../images/gtvglogo.png" 
     th:src="@{/images/gtvglogo.png}" th:alt-title="#{logo}" />

总结

  1. th:alt-titleth:lang-xmllang 是 Thymeleaf 专为“多属性赋相同值”设计的简化属性;
  2. th:alt-title 等价于同时设置 th:altth:titleth:lang-xmllang 等价于同时设置 th:langth:xml:lang
  3. 这种写法能减少代码冗余,尤其适合 alt/titlelang/xml:lang 这类常需赋值相同的属性对。