Posso impostare l'attributo data- * con thymeleaf?
Come ho capito dalla documentazione di thymeleaf ho provato:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Posso impostare l'attributo data- * con thymeleaf?
Come ho capito dalla documentazione di thymeleaf ho provato:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Risposte:
Sì, th:attr
per salvare la documentazione di Thymeleaf - Impostazione dei valori degli attributi .
Per il tuo scenario, questo dovrebbe fare il lavoro:
<div th:attr="data-el_id=${element.getId()}">
Le regole XML non ti consentono di impostare un attributo due volte in un tag, quindi non puoi averne più di uno th:attr
nello stesso elemento.
Nota: se desideri più di un attributo, separa i diversi attributi con una virgola:
<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()}"
Oppure puoi usare questo dialetto Thymeleaf https://github.com/mxab/thymeleaf-extras-data-attribute e sarai in grado di farlo
<div data:el_id="${element.getId()}">
Con Thymeleaf 3.0 c'è il Default Attribute Processor che può essere utilizzato per qualsiasi tipo di attributi personalizzati, ad esempio th:data-el_id=""
diventa data-el_id=""
, th:ng-app=""
diventang-app=""
e così via. Non c'è più bisogno dell'amato dialetto degli attributi dei dati.
Questa soluzione la preferisco, se voglio usare json come valore, invece di:
th:attr="data-foobar='{"foo":'+${bar}+'}'"
Puoi usare (in combinazione con la sostituzione letterale ):
th:data-foobar='|{"foo":${bar}}|'
Aggiornamento: se non ti piace lo th
spazio dei nomi, puoi anche utilizzare attributi amichevoli HTML5 e nomi di elementi comedata-th-data-foobar=""
.
Se qualcuno è interessato, i test del motore di modelli correlati possono essere trovati qui: Test per il processore di attributi predefinito
th:data-el_id
funzionerà.