Printemps et Thymeleaf 3: Expressions

1. Introduction

Thymeleaf est un moteur de template Java pour le traitement et la création de HTML, XML, JavaScript, CSS et texte brut. Pour une introduction à Thymeleaf et Spring, jetez un œil à cet article.

Outre ces fonctions de base, Thymeleaf nous propose un ensemble d'objets utilitaires qui nous aideront à effectuer des tâches courantes dans notre application.

Dans cet article, nous discuterons d'une fonctionnalité principale de Thymeleaf 3.0 - Objets utilitaires d'expression dans les applications Spring MVC. Plus précisément, nous aborderons le sujet du traitement des dates, des calendriers, des chaînes, des objets et bien plus encore.

2. Dépendances de Maven

Tout d'abord, voyons la configuration requise pour intégrer Thymeleaf avec Spring. La bibliothèque thymeleaf-spring est requise dans nos dépendances:

 org.thymeleaf thymeleaf 3.0.11.RELEASE   org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

Notez que, pour un projet Spring 4, la bibliothèque thymeleaf-spring4 doit être utilisée à la place de thymeleaf-spring5 . La dernière version des dépendances peut être trouvée ici.

3. Objets de l'utilitaire d'expression

Avant d'examiner l'objectif principal de cet article, si vous souhaitez prendre du recul et voir comment configurer Thymeleaf 3.0 dans votre projet d'application Web, consultez ce didacticiel.

Pour les besoins de l'article actuel, nous avons créé un contrôleur Spring et un fichier HTML - pour tester toutes les fonctionnalités dont nous allons discuter. Voici la liste complète des objets d'assistance disponibles et de leurs fonctions:

  • #dates : méthodes utilitaires pour lesobjets java.util.Date
  • #calendars : similaire à #dates , utilisé pour lesobjets java.util.Calendar
  • #numbers : méthodes utilitaires pour la mise en forme d'objets numériques
  • #strings : méthodes utilitaires pour lesobjets String
  • #objects : méthodes utilitaires pour laclasse d' objets Javaen général
  • #bools : méthodes utilitaires pour l'évaluation booléenne
  • #arrays : méthodes utilitaires pour les tableaux
  • #lists : méthodes utilitaires pour les listes
  • #sets : méthodes utilitaires pour les ensembles
  • #maps : méthodes utilitaires pour les cartes
  • #aggregates : méthodes utilitaires pour créer des agrégats sur des tableaux ou des collections
  • #messages : méthodes utilitaires pour obtenir des messages externalisés dans des expressions de variables

3.1. Objets Dates

La première fonction dont nous voulons parler est le traitement des objets java.util.Date . Les objets utilitaires d'expression responsables du traitement des dates commencent par # dates.functionName (). La première fonction que nous voulons couvrir est le formatage d'un objet Date (qui est ajouté aux paramètres du modèle Spring).

Disons que nous voulons utiliser le format ISO8601 :

Quelle que soit la façon dont notre date a été définie sur le côté back-end, elle doit être affichée conformément à cette norme. De plus, si nous voulons être précis avec le format, nous pouvons le spécifier manuellement:

La fonction prend deux variables comme paramètres: la date et son format.

Enfin, voici quelques fonctions utiles similaires que nous pouvons utiliser:

Dans le premier, nous recevrons le nom du jour de la semaine, dans le second, nous créerons un nouvel objet Date , et enfin nous créerons une nouvelle Date avec l'heure définie à 00:00.

3.2. Objets de calendrier

Les utilitaires de calendrier sont très similaires au traitement des dates, sauf que nous utilisons une instance de l' objet java.util.Calendar :

La seule différence est lorsque nous voulons créer une nouvelle instance de calendrier :

Veuillez noter que nous pouvons utiliser n'importe quelle méthode de classe Calendar afin d'obtenir les données demandées.

3.3. Traitement des nombres

Une autre fonctionnalité très utile est le traitement des nombres. Concentrons-nous sur une variable num , créée aléatoirement avec un type double :

Dans la première ligne, nous formons le nombre décimal en définissant des chiffres entiers minimum et des chiffres décimaux exacts. Dans le second, en plus des chiffres entiers et décimaux, nous avons spécifié le séparateur décimal. Les options sont POINT , COMMA , WHITESPACE , NONE ou DEFAULT (par locale).

Il y a une autre fonction que nous voulons présenter dans ce paragraphe. C'est la création d'une suite de nombres entiers:

Dans le premier exemple, nous avons demandé à Thymeleaf de générer une séquence de 0 à 2, tandis que dans le second, en plus de la valeur minimale et maximale, nous avons fourni une définition de l'étape (dans cet exemple, les valeurs changeront de deux).

Veuillez noter que l'intervalle est fermé des deux côtés.

3.4. Opérations sur les chaînes

Il s'agit de la fonctionnalité la plus complète des objets utilitaires d'expression.

Nous pouvons commencer la description avec l'utilitaire de vérification des objets String vides ou nuls . Très souvent, les développeurs utilisaient des méthodes Java dans les balises Thymeleaf pour ce faire, ce qui pourrait ne pas être sûr pour les objets nuls .

Au lieu de cela, nous pouvons faire ceci:

La première chaîne n'est pas vide, donc la méthode retournera false. La deuxième chaîne est nulle , donc nous obtiendrons vrai . Enfin, nous pouvons utiliser la méthode # strings.defaultString (…) pour spécifier une valeur par défaut, si String est vide.

Il existe de nombreuses autres méthodes. Tous fonctionnent non seulement avec des chaînes, mais également avec Java.Collections. Par exemple, pour utiliser des opérations liées aux sous-chaînes:

ou pour utiliser la comparaison et la concaténation sans aucune valeur nulle:

Enfin, il existe des fonctionnalités liées au style de texte, qui préserveront la syntaxe pour qu'elle soit toujours la même:

Dans la première méthode, le texte abrégé lui donnera une taille maximale de n . Si un texte est plus grand, il sera découpé et terminé par «…».

Dans la deuxième méthode, nous mettrons les mots en majuscule.

3.5. Agrégats

La dernière fonction, mais non la moindre, dont nous voulons parler ici, ce sont les agrégats . Ils sont nuls sûrs et fournissent des utilitaires pour calculer la moyenne ou la somme à partir d'un tableau ou de toute autre collection:

4. Conclusion

Dans cet article, nous avons discuté des fonctionnalités Expression Utility Objects implémentées dans le framework Thymeleaf, version 3.0.

L'implémentation complète de ce didacticiel se trouve dans le projet GitHub.

Comment tester? Notre suggestion est de commencer par jouer avec un navigateur, puis de vérifier également les tests JUnit existants.

Veuillez noter que les exemples ne couvrent pas toutes les expressions utilitaires disponibles. Si vous souhaitez en savoir plus sur tous les types d'utilitaires, jetez un œil ici.