Vous êtes sur la page 1sur 21

• Thymeleaf est un moteur de template Java moderne côté

serveur pour les environnements Web et autonomes.


• Son objectif principal est d’apporter d’élégants-modèles
naturels au flux de développement (html), qui peut être
correctement affiché dans les navigateurs et fonctionner
également comme prototypes statistiques, permettant une
collaboration plus étroite au sein des équipes de
développement.
• Avec des modules pour Spring Framework, une foule
d’intégrations avec vos outils préférés et la possibilité de
brancher vos propres fonctionnalités, Thymeleaf est idéal pour
le développement Web HTML5 JVM moderne.
● Thymeleaf possède plusieurs caractéristiques. En
voici une liste non exhaustive :
○ Traitement des fichiers : HTML, XHTML et
HTML5
○ Peut traiter à la fois des fichiers appartenant à
un site web ou non.
○ Composé de plusieurs modules (« dialectes »)
s’appliquant à travers des balises ou des
attributs de templates.
○ Le support de l’internationalisation des textes.
○ Une documentation très complète contenant
de nombreux exemples est disponible.
● ThymeLeaf est très extensible et permet de définir
ses propres ensembles d’attributs de modèle avec
les noms voulus, en évaluant les expressions voulues
dans la syntaxe voulue, tout cela en appliquant la
logique voulue, suivant un framework de moteur de
template.

● Néamoins, il est livré avec les dialectes standards


(Standard et SpringStandard), qui définissent un
ensemble de caractéristiques plus que suffisant pour
la plupart des scénarios. Il est possible d’identifier
quand ces dialectes standards sont utilisés dans un
modèle car il contiendra des attributs commençant
avec le préfixe th, comme <span th:text=”...”
>.
La plupart des attributs Thymeleaf permettent de définir
leurs valeurs sous forme d’expressions ou contenant des
expressions, que nous appellerons expressions standard
en raison des dialectes dans lesquels elles sont utilisées.
Ceux-ci peuvent être de cinq types.
- ${…} : Expressions variables.
- *{…} : Expression de sélection.
- #{…} : Expression de message (i18n).
- @{…} : Lien (URL) expressions.
- {…} : Expressions de fragments.
Contrôleurs :
Contiennent toutes les interactions
du serveur et renvoient des noms de
vues à l’interface qui va les mapper
aux objets de vues réels.
Ajouter quelques attributs de modèle de
données
• La partie la plus importante d'un contrôleur, les méthodes
mappées : une pour afficher la page du formulaire, et une autre
pour traiter l'ajout de nouveaux objets Seed Starter.
• Les formulaires
• Command object est le nom que Spring MVC donne à
form-backing beans, c'est-à-dire aux objets qui
modélisent les champs d'un formulaire et fournissent les
méthodes getter et setter qui seront utilisées par le
framework pour établir et obtenir les valeurs saisies par
l'utilisateur côté navigateur. Thymeleaf vous demande de
spécifier l'objet de commande en utilisant un attribut
th:object dans votre balise <form> :
• Ceci est cohérent avec d'autres utilisations de th:object,
mais en fait ce scénario spécifique ajoute quelques limitations
afin d'intégrer correctement l'infrastructure Spring MVC :
• Les valeurs des attributs th:object dans les balises de
formulaire doivent être des expressions variables (${...})
spécifiant uniquement le nom d'un attribut de modèle, sans
navigation par propriétés. Cela signifie qu'une expression
comme ${seedStarter} est valide, mais
${seedStarter.data} ne le serait pas. Une fois dans la
balise <form>, aucun autre attribut th:object ne peut être
spécifié. Ceci est cohérent avec le fait que les formulaires
HTML ne peuvent pas être imbriqués
Comme vous pouvez le voir, nous introduisons ici un nouvel
attribut : th:field. C'est une caractéristique très importante pour
l'intégration de Spring MVC parce qu'elle fait tout le travail lourd
de lier votre entrée avec une propriété dans le haricot de
form-backing. Vous pouvez le voir comme l'équivalent de l'attribut
path d'une balise de la bibliothèque de balises JSP de Spring
MVC.L'attribut th:field se comporte différemment selon qu'il est
attaché à une balise <input>, <select> ou <textarea> (et aussi selon
le type spécifique de balise <input>). Dans ce cas
(entrée[type=texte]), la ligne de code ci-dessus est similaire à :
• Exemple de contrôleur pour formulaire
Sur un objet Greeting
i18n
Pour l’i18n Thymeleaf propose de stocker tous les
wordings d’un site web dans des fichiers de
propriétés qui doivent être sous la forme
lang il suffit ensuite d’initialiser
Springboot en étendant
WebMvcConfigurerAdapter. Et de rajouter un
interceptor pour que la langue soit mise à jour en
fonction des paramètres de l’URL.

Il devient ensuite possible de changer la langue du


site en accèdant à l’URL et en lui passant
simplement lang=fr ou lang=en, si le fichier
message_fr.properties existe, la langue sera modifiée
en conséquence.
pom.xml

Le pom.xml par défaut utilisé par Thymeleaf peut nous apprendre quelques
informations intéressantes à son sujet (une copie du pom.xml généré par défaut peut
être trouvée ici 👉 LIEN

On y apprend que Thymeleaf est par défaut proposé avec Java 11 (en Novembre 2019)
et qu’il utilise une version de Springboot (SB) légèrement modifié étant donné qu’il
embarque les devtools de SB ce qui n’est pas le cas par défaut. Comme c’est par
défaut le cas avec les applications Springboot, le container par défaut est Tomcat qui
est toujours présent avec les dépendances de projet web
<artifactId>spring-boot-starter-web</artifactId> sauf indication
contraire.. Ce qui n’est pas le cas ici.
Site officiel de Thymeleaf :
https://www.thymeleaf.org
Site officiel de Spring : https://spring.io
Repository Maven :
https://mvnrepository.com/artifact/org.thymel
eaf

Vous aimerez peut-être aussi