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 -->
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 -->
Jawaban:
Ya, th:attruntuk menyelamatkan dokumentasi Thymeleaf - Mengatur nilai atribut .
Untuk skenario Anda, ini harus dilakukan:
<div th:attr="data-el_id=${element.getId()}">
Aturan XML tidak mengizinkan Anda menyetel atribut dua kali dalam tag, jadi Anda tidak boleh memiliki lebih dari satu th:attrdalam elemen yang sama.
Catatan: Jika Anda menginginkan lebih dari satu atribut, pisahkan atribut yang berbeda dengan koma:
<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()}"
Atau Anda dapat menggunakan dialek Thymeleaf ini https://github.com/mxab/thymeleaf-extras-data-attribute dan Anda akan dapat melakukannya
<div data:el_id="${element.getId()}">
Dengan Thymeleaf 3.0 ada Prosesor Atribut Default yang dapat digunakan untuk segala jenis atribut khusus, misalnya th:data-el_id=""menjadi data-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:
th:attr="data-foobar='{"foo":'+${bar}+'}'"
Anda dapat menggunakan (dalam kombinasi dengan substitusi literal ):
th:data-foobar='|{"foo":${bar}}|'
Pembaruan: Jika Anda tidak menyukai thnamespace, Anda juga dapat menggunakan atribut ramah HTML5 dan nama elemen seperti data-th-data-foobar="".
Jika seseorang tertarik, tes mesin template terkait dapat ditemukan di sini: Tes untuk Prosesor Atribut Default
th:data-el_idakan berfungsi.