Dapatkah saya menyetel atribut data- * dengan timeleaf?
Seperti yang saya pahami dari dokumentasi thymeleaf saya mencoba:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
th:data-el_id
akan berfungsi.Jawaban:
Ya,
th:attr
untuk menyelamatkan dokumentasi Thymeleaf - Mengatur nilai atribut .Untuk skenario Anda, ini harus dilakukan:
Aturan XML tidak mengizinkan Anda menyetel atribut dua kali dalam tag, jadi Anda tidak boleh memiliki lebih dari satu
th:attr
dalam elemen yang sama.Catatan: Jika Anda menginginkan lebih dari satu atribut, pisahkan atribut yang berbeda dengan koma:
sumber
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()}"
Atau Anda dapat menggunakan dialek Thymeleaf ini https://github.com/mxab/thymeleaf-extras-data-attribute dan Anda akan dapat melakukannya
sumber
Dengan Thymeleaf 3.0 ada Prosesor Atribut Default yang dapat digunakan untuk segala jenis atribut khusus, misalnya
th:data-el_id=""
menjadidata-el_id=""
,th:ng-app=""
menjadi ,ng-app=""
dan seterusnya. Tidak perlu lagi dialek atribut data yang dicintai.Solusi ini saya lebih suka, jika saya ingin menggunakan json sebagai nilainya, daripada:
Anda dapat menggunakan (dalam kombinasi dengan substitusi literal ):
Pembaruan: Jika Anda tidak menyukai
th
namespace, Anda juga dapat menggunakan atribut ramah HTML5 dan nama elemen sepertidata-th-data-foobar=""
.Jika seseorang tertarik, tes mesin template terkait dapat ditemukan di sini: Tes untuk Prosesor Atribut Default
sumber