Thymeleaf para Java: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Thymeleaf e para que serve?

\n\n

Thymeleaf é um moderno template engine server-side para aplicações Java, projetado para gerar arquivos HTML, XML, JavaScript, CSS e de texto. Ao contrário do JSP (JavaServer Pages), o Thymeleaf oferece uma sintaxe mais limpa, legível e natural, que é facilmente compreendida tanto por desenvolvedores quanto por designers.

\n\n

A principal vantagem do Thymeleaf é que seus templates são documentos HTML válidos. Isso significa que você pode abrir o template no navegador sem iniciar o servidor e visualizar sua estrutura. Os dados dinâmicos são inseridos por meio de atributos especiais que começam com o prefixo th:.

\n\n

Thymeleaf integra-se perfeitamente com o Spring Framework (especialmente Spring Boot), mas também pode ser usado como uma biblioteca independente. Ele suporta layouts, fragments, construções condicionais, loops, trabalho com formulários, internacionalização (i18n) e muito mais.

\n\n

Instalação do Thymeleaf

\n\n

Como Thymeleaf é uma biblioteca Java, ela é instalada através de sistemas de gerenciamento de dependências como Maven ou Gradle. Não existe um equivalente ao pip install para Java.

\n\n

Instalação via Maven (pom.xml)

\n\n
<dependency>\n    <groupId>org.thymeleaf</groupId>\n    <artifactId>thymeleaf</artifactId>\n    <version>3.1.2.RELEASE</version>\n</dependency>
\n\n

Instalação via Gradle (build.gradle)

\n\n
implementation 'org.thymeleaf:thymeleaf:3.1.2.RELEASE'
\n\n

Para Spring Boot (recomendado)

\n\n

Se você estiver usando Spring Boot, basta adicionar o starter:

\n\n
<dependency>\n    <groupId>org.springframework.boot</groupId>\n    <artifactId>spring-boot-starter-thymeleaf</artifactId>\n</dependency>
\n\n

O Spring Boot configurará automaticamente o Thymeleaf com configurações padrão sensatas.

\n\n

Início rápido com exemplo de código

\n\n

Vamos criar uma aplicação de console simples que usa Thymeleaf para gerar HTML.

\n\n

Passo 1: Crie o template (src/main/resources/templates/hello.html)

\n\n
<!DOCTYPE html>\n<html xmlns:th="http://www.thymeleaf.org">\n<head>\n    <title>Hello Thymeleaf</title>\n</head>\n<body>\n    <h1 th:text="${message}">Default Message</h1>\n    <p>Current date: <span th:text="${#dates.format(#dates.createNow(), 'dd-MM-yyyy')}">01-01-2024</span></p>\n</body>\n</html>
\n\n

Passo 2: Escreva o código Java para processar o template

\n\n
import org.thymeleaf.TemplateEngine;\nimport org.thymeleaf.context.Context;\nimport org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;\n\npublic class ThymeleafQuickStart {\n    public static void main(String[] args) {\n        // 1. Configuração do resolvedor de templates\n        ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();\n        resolver.setPrefix("/templates/");\n        resolver.setSuffix(".html");\n        resolver.setTemplateMode("HTML");\n\n        // 2. Criação do motor de templates\n        TemplateEngine engine = new TemplateEngine();\n        engine.setTemplateResolver(resolver);\n\n        // 3. Criação do contexto com dados\n        Context context = new Context();\n        context.setVariable("message", "Olá, Thymeleaf!");\n\n        // 4. Processamento do template\n        String result = engine.process("hello", context);\n        \n        System.out.println(result);\n    }\n}
\n\n

Resultado da execução:

\n\n
<!DOCTYPE html>\n<html>\n<head>\n    <title>Hello Thymeleaf</title>\n</head>\n<body>\n    <h1>Olá, Thymeleaf!</h1>\n    <p>Current date: <span>15-03-2024</span></p>\n</body>\n</html>

Recommendations