¿Puedo establecer el atributo data- * con thymeleaf?
Como entendí de la documentación de thymeleaf intenté:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
¿Puedo establecer el atributo data- * con thymeleaf?
Como entendí de la documentación de thymeleaf intenté:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Respuestas:
Sí, th:attr
para rescatar la documentación de Thymeleaf: establecer valores de atributos .
Para su escenario, esto debería hacer el trabajo:
<div th:attr="data-el_id=${element.getId()}">
Las reglas XML no le permiten establecer un atributo dos veces en una etiqueta, por lo que no puede tener más de uno th:attr
en el mismo elemento.
Nota: Si desea más de un atributo, separe los diferentes atributos por coma:
<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()}"
O puede usar este dialecto de Thymeleaf https://github.com/mxab/thymeleaf-extras-data-attribute y podrá hacerlo
<div data:el_id="${element.getId()}">
Con Thymeleaf 3.0 existe el Procesador de atributos por defecto que se puede usar para cualquier tipo de atributos personalizados, por ejemplo , se th:data-el_id=""
convierte data-el_id=""
, th:ng-app=""
se convierte , ng-app=""
etc. Ya no es necesario el querido dialecto de atributo de datos.
Esta solución la prefiero, si quiero usar json como valor, en lugar de:
th:attr="data-foobar='{"foo":'+${bar}+'}'"
Puede usar (en combinación con la sustitución literal ):
th:data-foobar='|{"foo":${bar}}|'
Actualización: si no le gusta el th
espacio de nombres, también puede usar atributos amigables HTML5 y nombres de elementos como data-th-data-foobar=""
.
Si alguien está interesado, las pruebas de motor de plantilla relacionadas se pueden encontrar aquí: Pruebas para el procesador de atributos predeterminado
th:data-el_id
funcionará.