Spring en Thymeleaf 3: Expressions

1. Inleiding

Thymeleaf is een Java-sjabloonengine voor het verwerken en creëren van HTML, XML, JavaScript, CSS en platte tekst. Bekijk dit artikel voor een inleiding tot Thymeleaf en Spring.

Naast deze basisfuncties biedt Thymeleaf ons een set hulpprogramma-objecten die ons zullen helpen bij het uitvoeren van veelvoorkomende taken in onze applicatie.

In dit artikel bespreken we een kernfunctie in Thymeleaf 3.0 - Expression Utility Objects in Spring MVC-applicaties. Meer specifiek behandelen we het onderwerp verwerkingsdatums, kalenders, tekenreeksen, objecten en nog veel meer.

2. Maven afhankelijkheden

Laten we eerst eens kijken naar de vereiste configuratie die nodig is om Thymeleaf met Spring te integreren. De thymeleaf-spring bibliotheek is vereist in onze afhankelijkheden:

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

Merk op dat voor een Spring 4-project de thymeleaf-spring4 bibliotheek moet worden gebruikt in plaats van thymeleaf-spring5. De laatste versie van de afhankelijkheden is hier te vinden.

3. Expression Utility-objecten

Voordat u naar de kernfocus van dit artikel kijkt, kunt u deze zelfstudie bekijken als u een stap terug wilt doen en wilt zien hoe u Thymeleaf 3.0 in uw webapp-project configureert.

Voor het doel van dit artikel hebben we een Spring-controller en HTML-bestand gemaakt - om alle functies te testen die we gaan bespreken. Hieronder vindt u de volledige lijst met beschikbare hulpobjecten en hun functies:

  • #data: hulpprogramma-methoden voor java.util.Date voorwerpen
  • #kalenders: gelijkwaardig aan #data, gebruikt voor java.util.Calendar voorwerpen
  • #nummers: hulpprogramma-methoden voor het opmaken van numerieke objecten
  • #strings: hulpprogramma-methoden voor Draad voorwerpen
  • #voorwerpen: hulpprogramma-methoden voor Java Voorwerp klasse in het algemeen
  • #bollen: hulpprogramma-methoden voor boolean evaluatie
  • #matrices: hulpprogramma-methoden voor arrays
  • #lijsten: hulpprogramma-methoden voor lijsten
  • #sets: hulpprogramma-methoden voor sets
  • #kaarten: hulpprogramma-methoden voor kaarten
  • #aggregaten: hulpprogramma-methoden voor het maken van aggregaten op arrays of verzamelingen
  • #berichten: hulpprogramma-methoden voor het verkrijgen van extern gemaakte berichten binnen expressies van variabelen

3.1. Dateert objecten

De eerste functie die we willen bespreken, is het verwerken van de java.util.Date voorwerpen. De expressiehulpprogramma-objecten die verantwoordelijk zijn voor datum verwerking begint met # dates.functionName (). De eerste functie die we willen behandelen, is het opmaken van een Datum object (dat wordt toegevoegd aan de Spring-modelparameters).

Laten we zeggen dat we willen gebruiken ISO8601 formaat:

Maakt niet uit hoe onze datum is ingesteld op de achterkant, moet het overeenkomstig deze standaard worden weergegeven. Wat meer is, als we specifiek willen zijn met het formaat, kunnen we het handmatig specificeren:

De functie heeft twee variabelen als parameters: Datum en het formaat.

Ten slotte zijn hier een paar vergelijkbare handige functies die we kunnen gebruiken:

In de eerste ontvangen we de naam van de dag van de week, in de tweede zullen we een nieuwe maken Datum object, en tot slot zullen we een nieuw Datum met tijd ingesteld op 00:00.

3.2. Agenda-objecten

Kalenderhulpprogramma's lijken erg op het verwerken van datums, behalve dat we een exemplaar van de java.util.Calendar voorwerp:

Het enige verschil is wanneer we nieuwe willen creëren Kalender voorbeeld:

Houd er rekening mee dat we elk Kalender class-methode om de gevraagde gegevens te krijgen.

3.3. Nummers verwerken

Een andere zeer handige functie is het verwerken van getallen. Laten we ons concentreren op een num variabele, willekeurig gemaakt met een dubbele type:

Op de eerste regel formatteren we het decimale getal door minimale gehele cijfers en exacte decimale cijfers in te stellen. In de tweede hebben we, naast gehele getallen en decimale cijfers, het decimale scheidingsteken gespecificeerd. De mogelijkheden zijn PUNT, KOMMA, WITTE RUIMTE, GEEN of STANDAARD (per landinstelling).

Er is nog een functie die we in deze paragraaf willen presenteren. Het is het creëren van een reeks gehele getallen:

In het eerste voorbeeld hebben we Thymeleaf een reeks van 0-2 laten genereren, terwijl we in het tweede naast de minimum- en maximumwaarde een definitie van stap hebben gegeven (in dit voorbeeld zullen de waarden met twee veranderen).

Houd er rekening mee dat de pauze aan beide zijden gesloten is.

3.4. Snaren operaties

Het is de meest uitgebreide functie van objecten voor uitdrukkingshulpprogramma's.

We kunnen de beschrijving beginnen met het controleren van lege of nulDraad voorwerpen. Vaak gebruikten ontwikkelaars Java-methoden in Thymeleaf-tags om dat te doen, wat misschien niet veilig is voor nul voorwerpen.

In plaats daarvan kunnen we dit doen:

De eerste Draad is niet leeg, dus de methode zal terugkeren false. De seconde Draad is nul, dus we zullen krijgen waar. Ten slotte kunnen we gebruiken # strings.defaultString (...) methode om een ​​standaardwaarde op te geven, if Draad zal leeg zijn.

Er zijn veel meer methoden. Ze werken allemaal niet alleen met snaren, maar ook met Java.Collections. Om bijvoorbeeld deelstringgerelateerde bewerkingen te gebruiken:

of om nulveilige vergelijking en aaneenschakeling te gebruiken:

Ten slotte zijn er tekstgerelateerde functies die ervoor zorgen dat de syntaxis altijd hetzelfde blijft:

Bij de eerste methode zorgt afgekorte tekst ervoor dat deze een maximale grootte heeft van n. Als een tekst groter is, wordt deze afgekapt en afgewerkt met “…”.

Bij de tweede methode zullen we woorden in hoofdletters schrijven.

3.5. Aggregaten

De laatste maar niet de minste functie die we hier willen bespreken is aggregaten. Zij zijn nul veilig en bied hulpprogramma's om het gemiddelde of de som uit een array of een andere verzameling te berekenen:

4. Conclusie

In dit artikel hebben we de functies van Expression Utility Objects besproken die zijn geïmplementeerd in het Thymeleaf-framework, versie 3.0.

De volledige implementatie van deze tutorial is te vinden in het GitHub-project.

Hoe te testen? Onze suggestie is om eerst met een browser te spelen en daarna ook de bestaande JUnit-tests te controleren.

Houd er rekening mee dat voorbeelden niet alle beschikbare hulpprogramma-uitdrukkingen dekken. Als je meer wilt weten over alle soorten hulpprogramma's, kijk dan hier.