Просто замечание для будущих читателей: у вас не может быть более одного th: attr в одном элементе, поэтому просто используйте один и th:attr="data-id=${element.getId()},data-name=${element.getName()}"
разделяйте
5
Если вам нужно включить переменную как часть строки, вам нужно сделать это:th:attr="data-id='some-text'+${element.getId()}+'some-other-text',data-name=${element.getName()}"
kabadisha
1
Комментарий @AntonioOtero должен быть частью ответа.
Дон Чидл
Я хочу, чтобы обработка атрибутов не ограничивалась определенными атрибутами, а выполнялась в целом. Кто-нибудь слышал, что это будет особенность? (Ну вините меня, я еще не проверял версию 3 ;-)
В Thymeleaf 3.0 есть обработчик атрибутов по умолчанию, который можно использовать для любых настраиваемых атрибутов, например, th:data-el_id=""становится data-el_id="", th:ng-app=""становится ng-app=""и так далее. Больше нет необходимости в любимом диалекте атрибутов данных.
Я предпочитаю это решение, если хочу использовать в качестве значения json вместо:
th:data-el_id
будет работать.Ответы:
Да,
th:attr
на помощь документация Thymeleaf - Установка значений атрибутов .Для вашего сценария это должно сработать:
Правила XML не позволяют устанавливать атрибут дважды в теге, поэтому
th:attr
в одном элементе не может быть более одного атрибута .Примечание. Если вам нужно несколько атрибутов, разделите их запятыми:
источник
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, и вы сможете сделать
источник
В Thymeleaf 3.0 есть обработчик атрибутов по умолчанию, который можно использовать для любых настраиваемых атрибутов, например,
th:data-el_id=""
становитсяdata-el_id=""
,th:ng-app=""
становитсяng-app=""
и так далее. Больше нет необходимости в любимом диалекте атрибутов данных.Я предпочитаю это решение, если хочу использовать в качестве значения json вместо:
Вы можете использовать (в сочетании с буквальной заменой ):
Обновление: если вам не нравится
th
пространство имен, вы также можете использовать дружественный атрибут HTML5 и имена элементов, напримерdata-th-data-foobar=""
.Если кому-то интересно, соответствующие тесты механизма шаблонов можно найти здесь: Тесты для процессора атрибутов по умолчанию
источник