Thymeleaf para Java: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Thymeleaf y para qué sirve?

\n\n

Thymeleaf es un moderno motor de plantillas del lado del servidor para aplicaciones Java, diseñado para generar archivos HTML, XML, JavaScript, CSS y de texto. A diferencia de JSP (JavaServer Pages), Thymeleaf ofrece una sintaxis más limpia, legible y natural, que es fácil de entender tanto para desarrolladores como para diseñadores.

\n\n

La principal ventaja de Thymeleaf es que sus plantillas son documentos HTML válidos. Esto significa que puedes abrir una plantilla en el navegador sin iniciar el servidor y ver su estructura. Los datos dinámicos se insertan mediante atributos especiales que comienzan con el prefijo th:.

\n\n

Thymeleaf se integra perfectamente con Spring Framework (especialmente Spring Boot), pero también puede usarse como una biblioteca independiente. Soporta diseños (layouts), fragmentos (fragments), estructuras condicionales, bucles, trabajo con formularios, internacionalización (i18n) y mucho más.

\n\n

Instalación de Thymeleaf

\n\n

Como Thymeleaf es una biblioteca de Java, se instala a través de sistemas de gestión de dependencias como Maven o Gradle. No existe un equivalente a pip install para Java.

\n\n

Instalación mediante 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

Instalación mediante Gradle (build.gradle)

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

Para Spring Boot (recomendado)

\n\n

Si usas Spring Boot, basta con agregar el starter:

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

Spring Boot configurará automáticamente Thymeleaf con valores predeterminados razonables.

\n\n

Inicio rápido con ejemplo de código

\n\n

Creemos una aplicación de consola simple que use Thymeleaf para generar HTML.

\n\n

Paso 1: Crea una plantilla (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

Paso 2: Escribe el código Java para procesar la plantilla

\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. Configuración del resolvedor de plantillas\n        ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();\n        resolver.setPrefix("/templates/");\n        resolver.setSuffix(".html");\n        resolver.setTemplateMode("HTML");\n\n        // 2. Creación del motor de plantillas\n        TemplateEngine engine = new TemplateEngine();\n        engine.setTemplateResolver(resolver);\n\n        // 3. Creación del contexto con datos\n        Context context = new Context();\n        context.setVariable("message", "¡Hola, Thymeleaf!");\n\n        // 4. Procesamiento de la plantilla\n        String result = engine.process("hello", context);\n        \n        System.out.println(result);\n    }\n}
\n\n

Resultado de la ejecución:

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

Recommendations