Como configurar e usar Thymeleaf no Spring Boot?

Thymeleaf é um motor de templates para Spring Boot que permite renderizar páginas HTML dinâmicas diretamente do backend.

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ável nome 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.

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 a th:utext para evitar ataques XSS
  • Aprenda sobre fragmentos (th:replace) para reutilizar componentes HTML

Contribuições de Rodrigo Farias

Compartilhe este tutorial: Como configurar e usar Thymeleaf no Spring Boot

Compartilhe este tutorial

Continue aprendendo:

Como realizar upload de arquivos em uma aplicação Java web

O upload de arquivos em aplicações Java web pode ser feito com Spring Boot e a interface MultipartFile, permitindo armazenar imagens e documentos.

Tutorial anterior

O que é e como funciona o Hibernate Validator

O Hibernate Validator é a implementação padrão da especificação Bean Validation, permitindo validar dados automaticamente em aplicações Java.

Próximo tutorial