Spring and Thymeleaf 3: Expressions

1. Introduzione

Thymeleaf è un motore di modelli Java per l'elaborazione e la creazione di HTML, XML, JavaScript, CSS e testo normale. Per un'introduzione a Thymeleaf e Spring, dai un'occhiata a questo articolo.

Oltre a queste funzioni di base, Thymeleaf ci offre una serie di oggetti di utilità che ci aiuteranno a svolgere attività comuni nella nostra applicazione.

In questo articolo, discuteremo una funzionalità principale di Thymeleaf 3.0: Expression Utility Objects nelle applicazioni Spring MVC. Più specificamente, tratteremo l'argomento dell'elaborazione di date, calendari, stringhe, oggetti e molto altro.

2. Dipendenze di Maven

Innanzitutto, vediamo la configurazione richiesta necessaria per integrare Thymeleaf con Spring. La libreria thymeleaf-spring è richiesta nelle nostre dipendenze:

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

Nota che, per un progetto Spring 4, la libreria thymeleaf-spring4 deve essere utilizzata al posto di thymeleaf-spring5 . L'ultima versione delle dipendenze può essere trovata qui.

3. Oggetti Expression Utility

Prima di esaminare il fulcro di questo articolo, se vuoi fare un passo indietro e vedere come configurare Thymeleaf 3.0 nel tuo progetto di app web, dai un'occhiata a questo tutorial.

Ai fini dell'attuale articolo, abbiamo creato un controller Spring e un file HTML per testare tutte le funzionalità di cui parleremo. Di seguito è riportato l'elenco completo degli oggetti helper disponibili e delle loro funzioni:

  • #dates : metodi di utilità peroggetti java.util.Date
  • #calendars : simile a #dates , utilizzato per glioggetti java.util.Calendar
  • #numbers : metodi di utilità per la formattazione di oggetti numerici
  • #strings : metodi di utilità peroggetti String
  • #objects : metodi di utilità per laclasseJava Object in generale
  • #bools : metodi di utilità per lavalutazione booleana
  • #arrays : metodi di utilità per gli array
  • #lists : metodi di utilità per gli elenchi
  • #sets : metodi di utilità per i set
  • #maps : metodi di utilità per le mappe
  • #aggregates : metodi di utilità per la creazione di aggregati su array o raccolte
  • #messages : metodi di utilità per ottenere messaggi esternalizzati all'interno di espressioni di variabili

3.1. Date Oggetti

La prima funzione di cui vogliamo parlare è l'elaborazione degli oggetti java.util.Date . Gli oggetti del programma di utilità delle espressioni responsabili dell'elaborazione della data iniziano con # date.functionName (). La prima funzione che vogliamo coprire è la formattazione di un oggetto Date (che viene aggiunto ai parametri del modello Spring).

Supponiamo di voler utilizzare il formato ISO8601 :

Non importa come la nostra data sia stata impostata sul lato back-end, deve essere visualizzata in base a questo standard. Inoltre, se vogliamo essere specifici con il formato, possiamo specificarlo manualmente:

La funzione accetta due variabili come parametri: Data e il suo formato.

Infine, ecco alcune funzioni altrettanto utili che possiamo usare:

Nella prima riceveremo il nome del giorno della settimana, nella seconda creeremo un nuovo oggetto Date , e infine creeremo una nuova Data con ora impostata a 00:00.

3.2. Oggetti calendario

Le utilità del calendario sono molto simili all'elaborazione delle date, tranne per il fatto che stiamo utilizzando un'istanza dell'oggetto java.util.Calendar :

L'unica differenza è quando vogliamo creare una nuova istanza di Calendar :

Tieni presente che possiamo utilizzare qualsiasi metodo di classe Calendar per ottenere i dati richiesti.

3.3. Elaborazione dei numeri

Un'altra caratteristica molto manciata è l'elaborazione dei numeri. Concentriamoci su una variabile num , creata casualmente con un doppio tipo:

Nella prima riga, formattiamo il numero decimale impostando il numero minimo di cifre intere e le cifre decimali esatte. Nella seconda, oltre ai numeri interi e decimali, abbiamo specificato il separatore decimale. Le opzioni sono POINT , COMMA , WHITESPACE , NONE o DEFAULT (in base alla localizzazione).

C'è un'altra funzione che vogliamo presentare in questo paragrafo. È la creazione di una sequenza di numeri interi:

Nel primo esempio, abbiamo avuto Thymeleaf generare una sequenza da 0-2, mentre nel secondo oltre al valore minimo e massimo, abbiamo fornito una definizione di passo (in questo esempio i valori cambieranno di due).

Si prega di notare che l'intervallo è chiuso su entrambi i lati.

3.4. Operazioni sulle stringhe

È la caratteristica più completa degli oggetti di utilità di espressione.

Possiamo iniziare la descrizione con l'utilità di controllare oggetti String vuoti o nulli . Molto spesso, gli sviluppatori utilizzerebbero metodi Java all'interno dei tag Thymeleaf per farlo, il che potrebbe non essere sicuro per gli oggetti nulli .

Invece, possiamo farlo:

La prima stringa non è vuota, quindi il metodo restituirà false. La seconda stringa è nulla , quindi diventeremo true . Infine, possiamo usare il metodo # strings.defaultString (…) per specificare un valore predefinito, se String sarà vuoto.

Esistono molti altri metodi. Tutti funzionano non solo con le stringhe ma anche con Java.Collections. Ad esempio, per utilizzare le operazioni relative alla sottostringa:

o per utilizzare il confronto e la concatenazione null-safe:

Infine, ci sono funzionalità relative allo stile di testo, che manterranno la sintassi sempre la stessa:

Nel primo metodo, il testo abbreviato farà avere una dimensione massima di n . Se un testo è più grande, verrà tagliato e terminato con "...".

Nel secondo metodo useremo le parole in maiuscolo.

3.5. Aggregati

L'ultima ma non meno importante funzione che vogliamo discutere qui sono gli aggregati . Sono nulli e forniscono utilità per calcolare la media o la somma da un array o da qualsiasi altra raccolta:

4. Conclusione

In questo articolo, abbiamo discusso le funzionalità di Expression Utility Objects implementate nel framework Thymeleaf, versione 3.0.

L'implementazione completa di questo tutorial può essere trovata nel progetto GitHub.

Come testare? Il nostro suggerimento è di giocare prima con un browser, quindi controllare anche i test JUnit esistenti.

Si prega di notare che gli esempi non coprono tutte le espressioni di utilità disponibili. Se vuoi conoscere tutti i tipi di utilità dai un'occhiata qui.