thymeleaf ile data- * özniteliğini kullanma


127

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 -->

7
Bu, Thymeleaf 3.0 için düzeltilen bir hataydı . Bu soru yalnızca 3.0 öncesi sürüm için geçerlidir. Yeni olanlar için th:data-el_idişe yarayacak.
GabiM

Yanıtlar:


221

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:attraynı öğ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.getN‌​ame()}"> 

54
Gelecekteki okuyucular için bir not, aynı öğede birden fazla th: attr olamaz, bu nedenle yalnızca birini kullanın ve farklı özellikleri virgülle ayırın:th:attr="data-id=${element.getId()},data-name=${element.getName()}"
AntonioOtero

5
Bir dizgenin parçası olarak bir değişken eklemeniz gerekiyorsa, bunu yapmanız gerekir:th:attr="data-id='some-text'+${element.getId()}+'some-other-text',data-name=${element.getName()}"
kabadisha

1
@AntonioOtero'nun yorumu cevabın bir parçası olmalıdır.
Don Cheadle

Öznitelik işlemenin belirli özniteliklerle sınırlı kalmamasını, genel olarak ele alınmasını diliyorum. Bunun özellik olacağını duyan var mı? (Beni
Dirk Schumacher


7

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='{&quot;foo&quot:'+${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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.