Printemps et Thymeleaf 3: Expressions

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 àthis write-up.

Outre ces fonctions de base, Thymeleaf nous offre un ensemble d’objets d’utilité qui nous aideront à effectuer les tâches courantes de notre application.

Dans cet article, nous aborderons 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 Maven

Tout d’abord, voyons la configuration requise pour intégrer Thymeleaf à Spring. La bibliothèquethymeleaf-spring est requise dans nos dépendances:


    org.thymeleaf
    thymeleaf
    3.0.9.RELEASE


    org.thymeleaf
    thymeleaf-spring5
    3.0.9.RELEASE

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

3. Objets utilitaires d'expression

Avant de regarder 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, jetez un œil à cetutorial.

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. Vous trouverez ci-dessous la liste complète des objets d'assistance disponibles et de leurs fonctions:

  • #dates: méthodes utilitaires pour les objetsjava.util.Date

  • #calendars: similaire à#dates, utilisé pour les objetsjava.util.Calendar

  • #numbers: méthodes utilitaires pour la mise en forme d'objets numériques

  • #strings: méthodes utilitaires pour les objetsString

  • #objects: méthodes utilitaires pour la classe JavaObject en général

  • #bools: méthodes utilitaires pour l'évaluation deboolean

  • #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 objetsjava.util.Date. Les objets utilitaires d'expression responsables du traitement dedate commencent par#dates.functionName(). La première fonction que nous voulons couvrir est le formatage d'un objetDate (qui est ajouté aux paramètres du modèle Spring).

Disons que nous voulons utiliser le formatISO8601:

Peu importe la façon dont notredate a été défini sur le côté back-end, il doit être affiché 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:Date et son format.

Enfin, voici quelques fonctions utiles que nous pouvons utiliser:

Dans le premier, nous recevrons le nom du jour de la semaine, dans le second, nous créerons un nouvel objetDate, et enfin nous créerons un nouveauDate avec l'heure fixée à 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'objetjava.util.Calendar:

La seule différence est lorsque nous voulons créer une nouvelle instanceCalendar:

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

3.3. Traitement des nombres

Une autre caractéristique très pratique est le traitement des chiffres. Concentrons-nous sur une variablenum, créée aléatoirement avec un typedouble:

Sur la première ligne, nous mettons en forme le nombre décimal en définissant des nombres entiers minimum et des chiffres décimaux exacts. Dans le second, en plus des nombres entiers et décimaux, nous avons spécifié le séparateur décimal. Les options sontPOINT,COMMA,WHITESPACE,NONE ouDEFAULT (par paramètres régionaux).

Nous souhaitons présenter une autre fonction dans ce paragraphe. C'est la création d'une suite de nombres entiers:

Dans le premier exemple, Thymeleaf a généré une séquence de 0-2, tandis que dans le second, outre les valeurs minimale et maximale, nous avons fourni une définition de step (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

C'est la fonctionnalité la plus complète des objets utilitaires d'expression.

Nous pouvons commencer la description avec l'utilitaire de vérification des objets vides ounullString. Assez 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 objetsnull.

Au lieu de cela, nous pouvons faire ceci:

Le premierString n'est pas vide, donc la méthode retournerafalse. Le secondString estnull, donc nous obtiendronstrue. Enfin, nous pouvons utiliser la méthode#strings.defaultString(…) pour spécifier une valeur par défaut, siString sera vide.

Il y a beaucoup plus de méthodes. Tous fonctionnent non seulement avec des chaînes, mais aussi avecJava.Collections. Par exemple pour utiliser des opérations liées aux sous-chaînes:

ou d'utiliser la comparaison et la concaténation null-safe:

Enfin, il existe des fonctionnalités liées au style du texte, qui préservent la même syntaxe:

Dans la première méthode, le texte abrégé lui donnera une taille maximale den. Si un texte est plus grand, il sera découpé et complété par “…”.

Dans la deuxième méthode, nous allons capitaliser les mots.

3.5. Agrégats

La dernière fonction mais non la moindre dont nous voulons discuter ici estaggregates. Ils sont sûrs pournullet 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 abordé les fonctionnalités d'Expression Utility Objects implémentées dans le framework Thymeleaf, version 3.0.

L'implémentation complète de ce didacticiel se trouve dansthe GitHub project.

How to test? Notre suggestion est de jouer d'abord avec un navigateur, puis de vérifier également les tests JUnit existants.

Veuillez prendre note que les exemples ne couvrent pas toutes les expressions d’utilitaire disponibles. Si vous voulez en savoir plus sur tous les types d'utilitaires, jetez un œil àhere.