Qu'est-ce que Thymeleaf et pourquoi l'utiliser ?
Thymeleaf est un moteur de templates côté serveur moderne pour les applications Java, conçu pour générer des fichiers HTML, XML, JavaScript, CSS et textuels. Contrairement à JSP (JavaServer Pages), Thymeleaf offre une syntaxe plus propre, plus lisible et naturelle, facile à comprendre aussi bien pour les développeurs que pour les designers.
Le principal avantage de Thymeleaf est que ses templates sont des documents HTML valides. Cela signifie que vous pouvez ouvrir un template dans un navigateur sans lancer de serveur et visualiser sa structure. Les données dynamiques sont insérées via des attributs spéciaux commençant par le préfixe th:.
Thymeleaf s'intègre parfaitement avec Spring Framework (notamment Spring Boot), mais peut également être utilisé comme bibliothèque autonome. Il prend en charge les layouts, les fragments, les conditions, les boucles, la gestion des formulaires, l'internationalisation (i18n) et bien plus encore.
Installation de Thymeleaf
Thymeleaf étant une bibliothèque Java, elle s'installe via les systèmes de gestion de dépendances Maven ou Gradle. Il n'existe pas d'équivalent de pip install pour Java.
Installation avec Maven (pom.xml)
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
Installation avec Gradle (build.gradle)
implementation 'org.thymeleaf:thymeleaf:3.1.2.RELEASE'
Pour Spring Boot (recommandé)
Si vous utilisez Spring Boot, ajoutez simplement le starter :
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
Spring Boot configure automatiquement Thymeleaf avec des paramètres par défaut optimaux.
Démarrage rapide avec un exemple de code
Créons une application console simple qui utilise Thymeleaf pour générer du HTML.
Étape 1 : Créez un template (src/main/resources/templates/hello.html)
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Bonjour Thymeleaf</title>
</head>
<body>
<h1 th:text="${message}">Message par défaut</h1>
<p>Date actuelle : <span th:text="${#dates.format(#dates.createNow(), 'dd-MM-yyyy')}">01-01-2024</span></p>
</body>
</html>
Étape 2 : Écrivez le code Java pour traiter le template
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
public class ThymeleafQuickStart {
public static void main(String[] args) {
// 1. Configuration du résolveur de templates
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
resolver.setPrefix("/templates/");
resolver.setSuffix(".html");
resolver.setTemplateMode("HTML");
// 2. Création du moteur de templates
TemplateEngine engine = new TemplateEngine();
engine.setTemplateResolver(resolver);
// 3. Création du contexte avec les données
Context context = new Context();
context.setVariable("message", "Bonjour, Thymeleaf !");
// 4. Traitement du template
String result = engine.process("hello", context);
System.out.println(result);
}
}
Résultat de l'exécution :
<!DOCTYPE html>
<html>
<head>
<title>Bonjour Thymeleaf</title>
</head>
<body>
<h1>Bonjour, Thymeleaf !</h1>
<p>Date actuelle : <span>15-03-2024</span></p>
</body>
</html>
Méthodes et fonctions essentielles de Thymeleaf
1. th:text — affichage de texte
Aussi dans la bibliothèque
Event Bus et le pattern Observer en JavaScript (Node.js) — création de systèmes d'événements flexibles
Travailler avec CSV en Go (Golang) : guide complet du package encoding/csv
Travailler avec CSV en PHP : la bibliothèque PhpSpreadsheet
Sequelize pour JavaScript (Node.js) : guide complet avec exemples
Travailler avec S3 et les stockages cloud en Node.js : la bibliothèque @aws-sdk/client-s3
Recommendations
Aussi dans la bibliothèque
Event Bus et le pattern Observer en JavaScript (Node.js) — création de systèmes d'événements flexibles
Travailler avec CSV en Go (Golang) : guide complet du package encoding/csv
Travailler avec CSV en PHP : la bibliothèque PhpSpreadsheet
Travailler avec S3 et les stockages cloud en Node.js : la bibliothèque @aws-sdk/client-s3