Hogyan kell dolgozni a dátumokkal a Thymeleaf-ben
1. Bemutatkozás
A Thymeleaf egy Java sablonmotor, amelyet úgy terveztek, hogy közvetlenül működjön együtt a Springszel. A Thymeleaf and Spring bevezetőjéhez olvassa el ezt az írást.
Ezen alapvető funkciók mellett a Thymeleaf olyan segédprogram objektumokat kínál nekünk, amelyek segítenek az alkalmazásunkban gyakori feladatok végrehajtásában.
Ebben a cikkben az új és a régi Java feldolgozását és formázását tárgyaljuk Dátum osztályok a Thymeleaf 3.0 néhány funkciójával.
2. Maven-függőségek
Először nézzük meg a Thymeleaf és Spring integrálásához szükséges konfigurációt pom.xml:
org.thymeleaf thymeleaf 3.0.11.KÖZLEMÉNY org. thymeleaf thymeleaf-spring5 3.0.11.
A legújabb verziói thymeleaf és kakukkfű-tavasz5 megtalálható a Maven Central oldalon. Vegye figyelembe, hogy egy 4. tavaszi projekt esetében a tűlevelű-tavasz4 könyvtár helyett kell használni kakukkfű-tavasz5.
Sőt, az új Java 8-mal való együttműködés érdekében Dátum osztályok, a következő függőséget adjuk hozzá a mi pom.xml:
org.thymeleaf.extras thymeleaf-extras-java8time 3.0.4.
A thymeleaf extrák egy opcionális modul, amelyet a hivatalos Thymeleaf csapat teljes mértékben támogat, és amelyet a Java 8 Time API-val való kompatibilitás érdekében hoztak létre. Hozzáad egy #időbeli kifogásolja a Kontextus mint segédprogram objektum processzor a kifejezés kiértékelésekor. Ez azt jelenti, hogy fel lehet használni az Object-Graph Navigation Language (OGNL) és a Spring Expression Language (SpringEL) kifejezések értékelésére.
3. Régi és új: java.util és java.time
A Idő A csomag egy új dátum, idő és naptár API a Java SE platformhoz. A fő különbség a régi örökség között Dátum és az, hogy az új API megkülönbözteti az idővonal gépi és emberi nézeteit. A gépnézet az integrálértékek sorozatát tárja fel a korszak, míg a nézet számos mezőt mutat (pl. év vagy nap).
Dolgozni az újval Idő csomagot, be kell állítanunk a sablonmotorunkat az új használatára Java8TimeDialect:
privát ISpringTemplateEngine templateEngine (ITemplateResolver templateResolver) {SpringTemplateEngine motor = új SpringTemplateEngine (); engine.addDialect (új Java8TimeDialect ()); motor.setTemplateResolver (templateResolver); visszatérő motor; }
Ez hozzáadja a #időbeli objektum, hasonló a standard dialektuséhoz, lehetővé téve a formázását és létrehozását Időbeli tárgyak a Thymeleaf sablonokból.
Az új és a régi osztályok feldolgozásának tesztelése érdekében létrehozzuk a következő változókat, és modellobjektumként hozzáadjuk őket a vezérlő osztályunkhoz:
model.addAttribute ("standardDate", új Date ()); model.addAttribute ("localDateTime", LocalDateTime.now ()); model.addAttribute ("localDate", LocalDate.now ()); model.addAttribute ("időbélyeg", Instant.now ());
Most készen állunk a használatra Kifejezés és TemporalsSegédprogram objektumok Thymeleaf nyújtotta.
3.1. Formátum dátumok
Az első funkció, amelyet át akarunk fedni, az a formázása Dátum objektum (amely hozzáadódik a Spring modell paramétereihez). Úgy döntöttünk, hogy a ISO8601 formátum:
Nem számít, milyen a miénk Dátum a háttéroldalon volt beállítva, a kiválasztott szabványnak megfelelően jelenik meg. A standardDate a # feldolgozni fogjadátumokat hasznosság. Az új LocalDateTime,LocalDate és Azonnali osztályokat fogja feldolgozni a #időbeli hasznosság. Ez a végeredmény, amelyet a böngészőben láthatunk:
Ez a végeredmény, amelyet a böngészőben láthatunk:
Sőt, ha manuálisan szeretnénk beállítani a formátumot, megtehetjük az alábbiak használatával:
Amint megfigyelhetjük, nem tudjuk feldolgozni a Azonnali osztály #temporals.format (…) - ez azt eredményezi UnsupportedTemporalTypeException. Sőt, a LocalDate csak akkor lehetséges, ha csak az adott dátummezőket adjuk meg, kihagyva az időmezőket.
A végeredmény:
3.2. Adott dátummezők beszerzése
Annak érdekében, hogy a java.util.Dátum osztályban a következő segédobjektumokat kell használnunk:
$ {# dátum.nap (dátum)} $ {# dátum.hónap (dátum)} $ {# dátum.hónapNév (dátum)} $ {# dátum.hónapNévRövid (dátum)} $ {# dátum.év (dátum)} $ {# date.dayOfWeek (dátum)} $ {# dátumot.dayOfWeekName (dátum)} $ {# dátum.dayOfWeekNameShort (dátum)} $ {# dátum.hour (dátum)} $ {# dátum.minute (dátum)} $ {# dátum.second (dátum)} $ {# dátum.millisecond (dátum)}
Az újért java.time csomagot kell tartanunkidőbeli segédprogramok:
$ {# temporals.day (dátum)} $ {# temporals.month (dátum)} $ {# temporals.monthName (dátum)} $ {# temporals.monthNameShort (dátum)} $ {# temporals.year (dátum)} $ {# temporals.dayOfWeek (dátum)} $ {# temporals.dayOfWeekName (dátum)} $ {# temporals.dayOfWeekNameShort (dátum)} $ {# temporals.hour (dátum)} $ {# temporals.minute (dátum)} $ {# temporals.second (dátum)} $ {# temporals.millisecond (dátum)}
Nézzünk meg néhány példát. Először mutassuk meg a hét mai napját:
Ezután mutassuk meg a hétköznap nevét:
És végül mutassuk meg a nap aktuális másodpercét:
Felhívjuk figyelmét, hogy az időalkatrészekkel való munkavégzéshez használnia kell LocalDateTime, as LocalDate hibát fog dobni.
4. Következtetés
Ebben a gyors bemutatóban megvitattuk a Java-t Dátum a Thymeleaf keretrendszer 3.0 verziójában megvalósított feldolgozási funkciók.
A bemutató teljes megvalósítása megtalálható a GitHub projektben - ez egy Maven-alapú projekt, amelyet könnyű importálni és futtatni.
Hogyan kell tesztelni? Javaslatunk, hogy először a böngészőben játsszon a kóddal, majd ellenőrizze a meglévő JUnit teszteket is.
Felhívjuk figyelmét, hogy példáink nem fedik le a Thymeleaf összes rendelkezésre álló lehetőségét. Ha meg akar ismerkedni a segédprogramok minden típusával, akkor nézze meg a Tavaszi és a Thymeleaf kifejezésekről szóló cikkünket.