Czy mogę ustawić atrybut data- * z tymiankiem?
Jak zrozumiałem z dokumentacji grasicy, próbowałem:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Czy mogę ustawić atrybut data- * z tymiankiem?
Jak zrozumiałem z dokumentacji grasicy, próbowałem:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Odpowiedzi:
Tak, th:attr
na ratunek Dokumentacja Thymeleaf - Ustawianie wartości atrybutów .
W Twoim scenariuszu powinno to wystarczyć:
<div th:attr="data-el_id=${element.getId()}">
Reguły XML nie pozwalają na dwukrotne ustawienie atrybutu w tagu, więc nie możesz mieć więcej niż jednego th:attr
w tym samym elemencie.
Uwaga: jeśli chcesz mieć więcej niż jeden atrybut, oddziel poszczególne atrybuty przecinkiem:
<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()}"
Lub możesz użyć tego dialektu Thymeleaf https://github.com/mxab/thymeleaf-extras-data-attribute i będziesz w stanie to zrobić
<div data:el_id="${element.getId()}">
W Thymeleaf 3.0 istnieje domyślny procesor atrybutów, który może być użyty do dowolnego rodzaju niestandardowych atrybutów, np. th:data-el_id=""
Staje się data-el_id=""
, th:ng-app=""
staje się ng-app=""
i tak dalej. Nie ma już potrzeby stosowania ulubionego dialektu atrybutów danych.
To rozwiązanie preferuję, jeśli chcę użyć json jako wartości, zamiast:
th:attr="data-foobar='{"foo":'+${bar}+'}'"
Możesz użyć (w połączeniu z podstawieniem dosłownym ):
th:data-foobar='|{"foo":${bar}}|'
Aktualizacja: Jeśli nie podoba Ci się th
przestrzeń nazw, możesz również użyć przyjaznych atrybutów HTML5 i nazw elementów, takich jak data-th-data-foobar=""
.
Jeśli ktoś jest zainteresowany, powiązane testy silnika szablonów można znaleźć tutaj: Testy dla domyślnego procesora atrybutów
th:data-el_id
będzie działać.