używanie atrybutu data - * z tymeleaf

Czy Mogę ustawić atrybut data - * za pomocą thymeleaf?

Jak zrozumiałem z dokumentacji thymeleaf próbowałem:

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

<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Author: Alexandru Severin, 2014-06-25

3 answers

Tak, th:attr na ratunek dokumentacja Thymeleaf-Ustawianie wartości atrybutów .

Dla Twojego scenariusza, to powinno wystarczyć:

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

Reguły XML nie pozwalają na dwukrotne ustawienie atrybutu w znaczniku, więc nie można mieć więcej niż jednego th:attr w tym samym elemencie.

Uwaga: Jeśli chcesz mieć więcej niż jeden atrybut, oddziel różne atrybuty przecinkiem:

<div th:attr="data-id=${element.getId()},data-name=${element.getN‌​ame()}"> 
 231
Author: Aldrian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-17 08:01:02

Lub możesz użyć tego dialektu Tymeleaf https://github.com/mxab/thymeleaf-extras-data-attribute and you ' ll be able do

<div data:el_id="${element.getId()}">
 12
Author: Adrian Ber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-13 14:52:33

W Thymeleaf 3.0 istnieje domyślny procesor atrybutów , który może być używany dla każdego rodzaju niestandardowych atrybutów, np. th:data-el_id="" staje data-el_id="", th:ng-app="" staje się ng-app="" i tak dalej. Nie ma już potrzeby używania atrybutu danych.

To rozwiązanie preferuję, Jeśli chcę użyć json jako wartości, zamiast:

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

Można użyć (w połączeniu z dosłowne zastępowanie):

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

Update: If you don ' t like the th przestrzeń nazw, można również użyć HTML5 przyjazne atrybuty i nazwy elementów jak data-th-data-foobar="".

jeśli ktoś jest zainteresowany, podobne testy silnika szablonu można znaleźć tutaj: testy dla domyślnego procesora atrybutów

 9
Author: RiZKiT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-27 14:14:56