Чи можна встановити атрибут data- * за допомогою чебрецю?
Як я зрозумів із документації на чебрець, я спробував:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Чи можна встановити атрибут data- * за допомогою чебрецю?
Як я зрозумів із документації на чебрець, я спробував:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Відповіді:
Так, 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
буде працювати.