O Thymeleaf atua como um motor de templates do lado do servidor para Java, sendo amplamente adotado no ecossistema Spring Boot para a geração de páginas web dinâmicas e interface de usuário.
Configuração de Dependências
Para iniciar, é necessário incluir os starters do Spring Web e do Thymeleaf no arquivo de configuração do Maven (pom.xml).
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
Definição de Propriedades
No arquivo application.yml, configure o comportamento do motor de templates. Abaixo está um exemplo ajustando o caminho dos templates e desativando o cache para o ambiente de desenvolvimento.
spring:
thymeleaf:
cache: false
prefix: classpath:/templates/
suffix: .html
encoding: UTF-8
Implementação do Controlador
Crie uma classe de controlador para interceptar as requisições HTTP e injetar os dados necessários no contexto do modelo (Model).
package com.exemplo.projeto.web;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class VisualizacaoController {
@GetMapping("/pagina-inicial")
public String carregarPagina(Model modelo) {
modelo.addAttribute("tituloPagina", "Bem-vindo ao Thymeleaf");
return "index";
}
}
Criação do Template HTML
Dentro do diretório src/main/resources/templates/, crie o arquivo index.html. Note o uso do namespace th para processar as expressões dinâmicas.
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Exemplo de Renderização</title>
</head>
<body>
<h1 th:text="${tituloPagina}">Título Padrão</h1>
</body>
</html>
Execução e Validação
Inicie a aplicação Spring Boot. Ao acessar o endpoint http://localhost:8080/pagina-inicial através de um navegador, o conteúdo dinâmico será renderizado corretamente.
Características Principais do Thymeleaf
- Prototipagem Natural: Os arquivos HTML podem ser abertos diretamenet no navegador como páginas estáticas, facilitando o trabalho em equipe entre front-end e back-end.
- Alta Customização: Permite a criação de dialetos e tags personalizadas para cenários complexos.
- Gestão de Cache: Em ambientes de produção, ativar o cache de templates (
spring.thymeleaf.cache=true) melhora significativamente a performance.
Anotações Essenciais do Spring MVC
Para o roteamento e manipulação de dados nas requisições, as seguintes anotações são frequentemente utilizadas em conjunto com o Thymeleaf:
@Controller: Indica que a classe é um controlador Spring MVC.@RequestMapping: Mapeia requisições HTTP para métodos específicos ou classes inteiras.@GetMappinge@PostMapping: Variantes de@RequestMappingrestritas aos métodos HTTP GET e POST, respectivamente.@ModelAttribute: Utilizado para vincular parâmetros de requisição a objetos ou adicionar atirbutos ao modelo.@PathVariable: Extrai valores diretamente do URI da requisição.@RequestParam: Captura parâmetros de consulta da URL.