Kann ich mit thymeleaf das data- * -Attribut setzen?
Wie ich aus der Thymeleaf-Dokumentation verstanden habe, habe ich versucht:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
th:data-el_id
wird funktionieren.Antworten:
Ja,
th:attr
zur Rettung der Thymeleaf-Dokumentation - Festlegen von Attributwerten .Für Ihr Szenario sollte dies folgende Aufgabe erfüllen:
Mit XML-Regeln können Sie ein Attribut nicht zweimal in einem Tag festlegen, sodass Sie nicht mehr als ein Attribut
th:attr
im selben Element haben können.Hinweis: Wenn Sie mehr als ein Attribut möchten, trennen Sie die verschiedenen Attribute durch Komma:
quelle
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()}"
Oder Sie können diesen Thymeleaf-Dialekt verwenden https://github.com/mxab/thymeleaf-extras-data-attribute und Sie werden in der Lage sein , do
quelle
Mit Thymeleaf 3.0 gibt es den Standardattributprozessor , der für jede Art von benutzerdefinierten Attributen verwendet werden kann, z. B.
th:data-el_id=""
wirddata-el_id=""
,th:ng-app=""
wirdng-app=""
und so weiter. Der beliebte Datenattribut-Dialekt ist nicht mehr erforderlich.Diese Lösung bevorzuge ich, wenn ich json als Wert verwenden möchte , anstatt:
Sie können verwenden (in Kombination mit wörtlicher Substitution ):
Update: Wenn Ihnen der
th
Namespace nicht gefällt , können Sie auch HTML5-freundliche Attribut- und Elementnamen verwenden wie verwendendata-th-data-foobar=""
.Wenn jemand interessiert ist, finden Sie hier verwandte Template-Engine-Tests: Tests für den Standardattributprozessor
quelle