🚀 5.2 O Arsenal de Atributos do Thymeleaf
Para dar vida aos nossos templates na Engenharia Premium, utilizamos um conjunto de atributos especializados que o Thymeleaf processa no servidor. Abaixo, os principais comandos que transformarão seu HTML estático em uma aplicação de elite.
📥 Saída de Dados e Internacionalização
th:text: Substitui o conteúdo da tag pelo valor da expressão.- Ex:
<span th:text="${cliente.nome}">Nome Fake</span>
- Ex:
th:utext: (Unescaped Text) Exibe HTML puro. Use com cautela por motivos de segurança (XSS)!th:text="#{welcome.message}": Busca uma chave nos arquivos de tradução (messages.properties), permitindo um sistema global (i18n).
🧭 Navegação e Links Estáveis
Na nuvem, as URLs podem mudar. O Thymeleaf resolve isso com o prefixo @.
th:href: Gerencia links para CSS, JS ou outras páginas.- Ex:
<link th:href="@{/css/main.css}" rel="stylesheet">
- Ex:
th:src: Gerencia caminhos para imagens e scripts externos.- Ex:
<img th:src="@{/img/logo.png}">
- Ex:
th:action: Define o destino de um formulário de forma segura.
📂 Controle de Fluxo e Iteração
th:each: O “For-Each” das telas. Itera sobre listas de objetos.- Ex:
<li th:each="item : ${itens}" th:text="${item.nome}">Item</li>
- Ex:
th:if/th:unless: Renderização condicional. Oth:unlessé o inverso doif.- Ex:
<div th:if="${clientes.empty}">Nenhum cliente cadastrado</div>
- Ex:
📝 Gestão de Formulários (Spring Integration)
th:object: Define o objeto que o formulário está editando.th:field: Vincula um atributo do objeto a uminput, gerenciando automaticamente oid,nameevalue.- Ex:
<input type="text" th:field="*{nome}">(Note o uso do*para seleção relativa ao objeto).
- Ex:
🎨 Dinamismo Visual
th:class/th:classappend: Aplica classes CSS condicionalmente (ideal para validações de erro).- Ex:
<div class="base" th:classappend="${#fields.hasErrors('nome')} ? 'is-invalid'"></div>
- Ex:
IMPORTANT
Lembre-se: o segredo do Template Natural é sempre colocar um conteúdo “mock” dentro da tag. O navegador exibirá esse conteúdo no design, mas o Spring Boot o substituirá pelo valor real na execução.
No próximo capítulo, aprenderemos a poderosa linguagem de expressões que alimenta esses atributos.