Thymeleaf ile data- * özniteliğini ayarlayabilir miyim?
Timeleaf belgelerinden anladığım gibi denedim:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Thymeleaf ile data- * özniteliğini ayarlayabilir miyim?
Timeleaf belgelerinden anladığım gibi denedim:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Yanıtlar:
Evet, Thymeleaf belgelerinith:attr
kurtarmak için - Öznitelik değerlerini ayarlama .
Senaryonuz için, bu işi yapmalı:
<div th:attr="data-el_id=${element.getId()}">
XML kuralları, bir etikette bir özniteliği iki kez ayarlamanıza izin vermez, bu nedenle th:attr
aynı öğede birden fazla niteliğe sahip olamazsınız .
Not: Birden fazla öznitelik istiyorsanız, farklı öznitelikleri virgülle ayırın:
<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()}"
Veya bu Thymeleaf lehçesini kullanabilirsiniz https://github.com/mxab/thymeleaf-extras-data-attribute ve yapabileceksiniz
<div data:el_id="${element.getId()}">
Thymeleaf 3.0 ile , her tür özel öznitelik için kullanılabilen Varsayılan Öznitelik İşlemcisi vardır, örneğin, th:data-el_id=""
olur data-el_id=""
, th:ng-app=""
olur ng-app=""
vb. Artık sevilen veri özelliği lehçesine gerek yok.
Bu çözümü , değer olarak json kullanmak istersem , bunun yerine tercih ederim :
th:attr="data-foobar='{"foo":'+${bar}+'}'"
Şunları kullanabilirsiniz ( değişmez ikame ile birlikte ):
th:data-foobar='|{"foo":${bar}}|'
Güncelleme: Adth
alanını beğenmezseniz, HTML5 uyumlu özniteliği ve gibi öğe adlarını da kullanabilirsiniz data-th-data-foobar=""
.
Birisi ilgilenirse, ilgili şablon motor testleri burada bulunabilir: Varsayılan Öznitelik İşlemcisi Testleri
th:data-el_id
işe yarayacak.