Posso definir o atributo data- * com thymeleaf?
Como entendi na documentação do thymeleaf, tentei:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Posso definir o atributo data- * com thymeleaf?
Como entendi na documentação do thymeleaf, tentei:
<div th:data-el_id="${element.getId()}"> <!-- doesn't work -->
<div data-th-el_id="${element.getId()}"> <!-- doesn't work -->
Respostas:
Sim, th:attr
para a documentação de resgate do Thymeleaf - Configurando valores de atributo .
Para o seu cenário, isso deve fazer o trabalho:
<div th:attr="data-el_id=${element.getId()}">
As regras XML não permitem definir um atributo duas vezes em uma tag; portanto, você não pode ter mais de um th:attr
no mesmo elemento.
Nota: Se você desejar mais de um atributo, separe os diferentes atributos por vírgula:
<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()}"
Ou você pode usar este dialeto da Thymeleaf https://github.com/mxab/thymeleaf-extras-data-attribute e poderá fazer
<div data:el_id="${element.getId()}">
Com o Thymeleaf 3.0, existe o processador de atributos padrão, que pode ser usado para qualquer tipo de atributo personalizado, por exemplo , torna- th:data-el_id=""
se data-el_id=""
, th:ng-app=""
torna ng-app=""
- se etc. Não há mais necessidade do dialeto de atributo de dados amado.
Esta solução eu prefiro, se eu quiser usar json como o valor, em vez de:
th:attr="data-foobar='{"foo":'+${bar}+'}'"
Você pode usar (em combinação com a substituição literal ):
th:data-foobar='|{"foo":${bar}}|'
Update: Se você não gosta do th
namespace, você também pode usar HTML5 atributo amigável e nomes de elementos como data-th-data-foobar=""
.
Se alguém estiver interessado, os testes relacionados ao mecanismo de modelo podem ser encontrados aqui: Testes para o Processador de Atributos Padrão
th:data-el_id
vai funcionar.