Answers:
是的,th:attr
请参阅Thymeleaf救援文档-设置属性值。
对于您的方案,这应该可以完成工作:
<div th:attr="data-el_id=${element.getId()}">
XML规则不允许您在标记中设置两次属性,因此th:attr
同一元素中不能有多个属性。
注意:如果您想要一个以上的属性,请用逗号分隔不同的属性:
<div th:attr="data-id=${element.getId()},data-name=${element.getName()}">
th:attr="data-id=${element.getId()},data-name=${element.getName()}"
th:attr="data-id='some-text'+${element.getId()}+'some-other-text',data-name=${element.getName()}"
或者您可以使用此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='{"foo":'+${bar}+'}'"
您可以使用(与文字替换结合使用):
th:data-foobar='|{"foo":${bar}}|'
更新:如果您不喜欢th
命名空间,还可以使用HTML5友好属性和元素名称,例如data-th-data-foobar=""
。
如果有人感兴趣,可以在这里找到相关的模板引擎测试:默认属性处理器的测试
th:data-el_id
将起作用。