Como configurar e usar Thymeleaf no Spring Boot?
O Thymeleaf é um motor de templates para Java que permite criar páginas HTML dinâmicas em aplicações Spring Boot. Ele substitui o JSP e é uma das ferramentas mais utilizadas para desenvolvimento de aplicações web modernas.
1. Adicionando Thymeleaf ao Projeto
Para usar Thymeleaf em um projeto Spring Boot, adicione a seguinte dependência ao pom.xml
:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
O Spring Boot já configura o Thymeleaf automaticamente ao detectar essa dependência.
2. Criando um Template HTML
Crie um arquivo HTML dentro do diretório src/main/resources/templates:
src/main/resources/templates/index.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Exemplo Thymeleaf</title>
</head>
<body>
<h1>Bem-vindo ao Thymeleaf, <span th:text="${nome}"></span>!</h1>
</body>
</html>
Explicação:
th:text="${nome}"
substitui o valor da variávelnome
no HTML de forma dinâmica.- O
xmlns:th
define o namespace do Thymeleaf.
3. Criando um Controller para Renderizar a Página
Agora, crie um Controller para enviar dados ao template Thymeleaf:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class ThymeleafController {
@GetMapping("/")
public String index(Model model) {
model.addAttribute("nome", "João");
return "index"; // Nome do template HTML (index.html)
}
}
Explicação:
@Controller
indica que essa classe manipula requisições web.model.addAttribute("nome", "João")
adiciona um valor dinâmico ao template.- O método retorna o nome do arquivo HTML (
index.html
).
4. Executando o Projeto
Inicie sua aplicação Spring Boot e acesse http://localhost:8080/
. O navegador renderizará a página com a mensagem:
Bem-vindo ao Thymeleaf, João!
5. Exibindo Listas no Thymeleaf
Para exibir uma lista de objetos, use a tag th:each
:
<ul>
<li th:each="usuario : ${usuarios}" th:text="${usuario}"></li>
</ul>
No Controller, passe a lista de usuários:
@GetMapping("/usuarios")
public String listarUsuarios(Model model) {
List<String> usuarios = List.of("Alice", "Bob", "Carlos");
model.addAttribute("usuarios", usuarios);
return "usuarios";
}
6. Criando Formulários no Thymeleaf
Para capturar dados do usuário, utilize formulários com th:object
:
<form th:action="@{/salvar}" th:object="${usuario}" method="post">
<input type="text" th:field="*{nome}" placeholder="Nome">
<button type="submit">Salvar</button>
</form>
Crie um Controller para processar os dados enviados:
@PostMapping("/salvar")
public String salvarUsuario(@ModelAttribute Usuario usuario) {
System.out.println("Usuário salvo: " + usuario.getNome());
return "redirect:/";
}
Conclusão
O Thymeleaf é uma ferramenta poderosa para criar páginas dinâmicas em aplicações Spring Boot. Ele permite manipular variáveis, listas e formulários diretamente no HTML, tornando o desenvolvimento web mais simples e eficiente.
Por que o Thymeleaf ainda é relevante no desenvolvimento Java web?
Com o avanço das tecnologias frontend como React e Angular, muitas empresas migraram para SPAs. No entanto, o Thymeleaf ainda é amplamente utilizado em aplicações Java corporativas, especialmente em sistemas internos e administrativos. Sua integração nativa com o Spring Boot e a facilidade de uso tornam essa tecnologia uma excelente opção para projetos que precisam de páginas dinâmicas renderizadas no servidor.
Algumas aplicações:
- Criação de páginas dinâmicas em aplicações Java
- Renderização de HTML diretamente do backend
- Formulários e manipulação de dados em páginas web
- Integração com Spring Boot para desenvolvimento ágil
Dicas para quem está começando
- Utilize o IntelliJ IDEA para visualizar templates Thymeleaf diretamente
- Evite colocar lógica complexa nos templates; use o Controller para processar dados
- Prefira
th:text
ath:utext
para evitar ataques XSS - Aprenda sobre fragmentos (
th:replace
) para reutilizar componentes HTML
Contribuições de Rodrigo Farias