Kako raditi s datumima u majčinoj dušici

1. Uvod

Thymeleaf je Java mehanizam predložaka dizajniran za izravni rad s Springom. Za uvod u majčinu dušicu i proljeće, pogledajte ovaj spis.

Pored ovih osnovnih funkcija, Thymeleaf nam nudi i niz pomoćnih objekata koji će nam pomoći u izvršavanju uobičajenih zadataka u našoj aplikaciji.

U ovom ćemo članku razgovarati o obradi i formatiranju nove i stare Java Datum klase s pregršt značajki Thymeleaf 3.0.

2. Ovisnosti Mavena

Prvo, pogledajmo konfiguraciju potrebnu za integriranje Thymeleaf-a s Springom u naš pom.xml:

 timijanov list orgy 3.0.11.OSLOBODITI timijanov list-proljeće5 3.0.11. 

Najnovije verzije majčina dušica i majčina dušica-proljeće5 možete pronaći na Maven Central. Za projekt Spring 4, majčina dušica-proljeće4 knjižnica se mora koristiti umjesto majčina dušica-proljeće5.

Štoviše, za rad s novom Java 8 Datum klase, našoj ćemo dodati sljedeću ovisnost pom.xml:

 org.thymeleaf.extras majčina dušica-dodaci-java8time 3.0.4.OBLAŽENJE 

The dodaci majčine dušice je neobavezni modul, u potpunosti podržan od službenog tima Thymeleaf, koji je stvoren za kompatibilnost s Java 8 Time API. Dodaje #privremeni prigovoriti na Kontekst kao procesor uslužnog objekta tijekom evaluacija izraza. To znači da se može koristiti za procjenu izraza u objektno-grafičkom navigacijskom jeziku (OGNL) i proljetnom jeziku izraza (SpringEL).

3. Staro i novo: java.util i java.vrijeme

The Vrijeme paket novi je API za datum, vrijeme i kalendar za platformu Java SE. Glavna razlika između starog nasljeđa Datum i jest da novi API razlikuje između strojnog i ljudskog pogleda na vremensku traku. Strojni prikaz otkriva slijed integralnih vrijednosti u odnosu na epoha, dok pogled otkriva skup polja (npr. godinu ili dan).

Za rad s novim Vrijeme paket, moramo konfigurirati naš mehanizam predloška da koristi novi Java8TimeDialect:

privatni ISpringTemplateEngine templateEngine (ITemplateResolver templateResolver) {SpringTemplateEngine engine = novi SpringTemplateEngine (); engine.addDialect (novi Java8TimeDialect ()); engine.setTemplateResolver (templateResolver); povratni motor; }

Ovo će dodati #privremeni objekt sličan onima u standardnom dijalektu, omogućujući formatiranje i stvaranje Vremenski predmeti s predložaka majčine dušice.

Kako bismo testirali obradu novih i starih klasa, stvorit ćemo sljedeće varijable i dodati ih kao objekt modela u našu klasu kontrolera:

model.addAttribute ("standardniDate", novi Datum ()); model.addAttribute ("localDateTime", LocalDateTime.now ()); model.addAttribute ("localDate", LocalDate.now ()); model.addAttribute ("vremenska oznaka", Instant.now ());

Sada smo spremni za upotrebu Izraz i PrivremeneUslužni objekti osigurao Timileaf.

3.1. Datum formatiranja

Prva funkcija koju želimo pokriti je oblikovanje a Datum objekt (koji se dodaje parametrima modela Spring). Odlučili smo koristiti ISO8601 format:

Bez obzira na naše Datum je postavljen na stražnjoj strani, prikazat će se u skladu s odabranim standardom. The standardDate obrađivat će #datumi korisnost. Novi LocalDateTime,LocalDate i Trenutak klase će obrađivati ​​#privremeni korisnost. Ovo je konačni rezultat koji ćemo vidjeti u pregledniku:

Ovo je konačni rezultat koji ćemo vidjeti u pregledniku:

Štoviše, ako želimo format postaviti ručno, to možemo učiniti pomoću:

Kao što možemo primijetiti, ne možemo obraditi Trenutak razred s #temporals.format (…) - rezultirat će u UnsupportedTemporalTypeException. Štoviše, formatiranje LocalDate je moguće samo ako navedemo samo određena polja datuma, preskačući vremenska polja.

Konačni rezultat:

3.2. Nabavite određena polja datuma

Da bi se dobila posebna polja java.util.Datum klase, trebali bismo koristiti sljedeće uslužne objekte:

$ {# datumi.dan (datum)} $ {# datumi.mesec (datum)} $ {# datumi.mesecName (datum)} $ {# datumi.mesecNameShort (datum)} $ {# datumi.godina (datum)} $ {# date.dayOfWeek (date)} $ {# date.dayOfWeekName (date)} $ {# date.dayOfWeekNameShort (date)} $ {# date.hour (date)} $ {# date.minute (date)} $ {# datumi.sekunda (datum)} $ {# datumi.milisekunda (datum)}

Za novo java.vrijeme paketa, trebali bismo se držati #privremeni komunalne usluge:

$ {# temporals.day (date)} $ {# temporals.month (date)} $ {# temporals.monthName (date)} $ {# temporals.monthNameShort (date)} $ {# temporals.year (date)} $ {# temporals.dayOfWeek (date)} $ {# temporals.dayOfWeekName (date)} $ {# temporals.dayOfWeekNameShort (date)} $ {# temporals.hour (date)} $ {# temporals.minute (date)} $ {# temporals.second (date)} $ {# temporals.millisecond (date)}

Pogledajmo nekoliko primjera. Prvo, pokažimo današnji dan u tjednu:

Dalje, pokažimo naziv radnog dana:

I na kraju, pokažimo trenutnu sekundu dana:

Imajte na umu da biste za rad s vremenskim dijelovima trebali koristiti LocalDateTime, kao LocalDate bacit će pogrešku.

4. Zaključak

U ovom smo brzom vodiču razgovarali o Javi Datum značajke obrade implementirane u okviru Thymeleaf, verzija 3.0.

Potpunu implementaciju ovog vodiča možete pronaći u projektu GitHub - ovo je projekt zasnovan na Mavenu koji se lako uvozi i izvodi.

Kako testirati? Naš je prijedlog da se prvo poigrate kodom u pregledniku, a zatim provjerite i naše postojeće JUnit testove.

Napominjemo da naši primjeri ne obuhvaćaju sve dostupne opcije u majčinoj dušici. Ako želite naučiti o svim vrstama uslužnih programa, pogledajte naš članak koji govori o izrazima proljeća i majčine dušice.


$config[zx-auto] not found$config[zx-overlay] not found