在胸腺叶中使用 data-* 属性

我可以用胸腺叶设置 data-* 属性吗?

正如我从百里香叶文档中了解到的那样,我尝试了:

<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->


<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
108594 次浏览

是的,th:attr去营救 Thymeleaf 文档-设置属性值

对于您的场景,这应该可以完成工作:

<div th:attr="data-el_id=${element.getId()}">

XML 规则不允许在一个标记中设置两次属性,因此在同一个元素中不能有多个 th:attr

注意: 如果需要多个属性,请用逗号分隔不同的属性:

<div th:attr="data-id=${element.getId()},data-name=${element.getN‌​ame()}">

或者你可以使用这种 Thymeleaf 方言 https://github.com/mxab/thymeleaf-extras-data-attribute,你就可以做到

<div data:el_id="${element.getId()}">

有了 Thymeleaf 3.0,就有了 默认属性处理器,它可以用于任何类型的自定义属性,例如 th:data-el_id=""变成 data-el_id=""th:ng-app=""变成 ng-app=""等等。不再需要深受喜爱的数据属性方言。

这个解决方案我更喜欢,如果我想利用 Json作为值,而不是:

th:attr="data-foobar='{&quot;foo&quot:'+${bar}+'}'"

您可以使用(与 字面替换组合使用) :

th:data-foobar='|{"foo":${bar}}|'

更新: 如果您不喜欢 th名称空间,也可以像 data-th-data-foobar=""一样使用 HTML5友好的属性和元素名称

如果有人感兴趣,相关的模板引擎测试可以在这里找到: 默认属性处理器测试