Puis-je définir l'attribut data- * avec thymeleaf?
Comme je l'ai compris à partir de la documentation thymeleaf, j'ai essayé:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
th:data-el_id
cela fonctionnera.Réponses:
Oui,
th:attr
à la rescousse de la documentation Thymeleaf - Définition des valeurs d'attribut .Pour votre scénario, cela devrait faire le travail:
Les règles XML ne vous permettent pas de définir deux fois un attribut dans une balise, vous ne pouvez donc pas en avoir plus d'un
th:attr
dans le même élément.Remarque: si vous voulez plus d'un attribut, séparez les différents attributs par une virgule:
la source
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()}"
Ou vous pouvez utiliser ce dialecte Thymeleaf https://github.com/mxab/thymeleaf-extras-data-attribute et vous pourrez le faire
la source
Avec Thymeleaf 3.0, il y a le processeur d'attributs par défaut qui peut être utilisé pour n'importe quel type d'attributs personnalisés, par exemple
th:data-el_id=""
devientdata-el_id=""
,th:ng-app=""
devientng-app=""
et ainsi de suite. Il n'y a plus besoin du dialecte des attributs de données bien-aimé.Cette solution que je préfère, si je veux utiliser json comme valeur, au lieu de:
Vous pouvez utiliser (en combinaison avec une substitution littérale ):
Mise à jour: Si vous n'aimez pas l'
th
espace de noms, vous pouvez également utiliser des noms d'attributs et d'éléments conviviaux HTML5 commedata-th-data-foobar=""
.Si quelqu'un est intéressé, les tests de moteur de modèles associés peuvent être trouvés ici: Tests pour le processeur d'attributs par défaut
la source