Uvod u upotrebu majčine dušice u proljeće

1. Uvod

Thymeleaf je Java predložak za obradu i stvaranje HTML-a, XML-a, JavaScript-a, CSS-a i teksta.

U ovom ćemo članku razgovarati kako koristiti majčinu dušicu s proljećem zajedno s nekim osnovnim slučajevima upotrebe u sloju pogleda Spring MVC aplikacije.

Biblioteka je izuzetno proširiva i njezina prirodna mogućnost oblikovanja predložaka osigurava prototipiranje predložaka bez pozadine - što ubrzava razvoj u usporedbi s drugim popularnim mehanizmima predložaka, poput JSP-a.

2. Integriranje majčine dušice s proljećem

Prvo da vidimo konfiguracije potrebne za integraciju s Springom. The majčina dušica-proljeće za integraciju je potrebna knjižnica.

Dodajte sljedeće ovisnosti u svoju Maven POM datoteku:

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

Za projekt Spring 4, majčina dušica-proljeće4 knjižnica se mora koristiti umjesto majčina dušica-proljeće5.

The SpringTemplateEngine klasa izvodi sve korake konfiguracije. Ovu klasu možete konfigurirati kao grah u Java konfiguracijskoj datoteci:

@Bean @Description ("Thimmeleaf Template Resolver") javni ServletContextTemplateResolver templateResolver () {ServletContextTemplateResolver templateResolver = novi ServletContextTemplateResolver (); templateResolver.setPrefix ("/ WEB-INF / prikazi /"); templateResolver.setSuffix (". html"); templateResolver.setTemplateMode ("HTML5"); vrati predložakResolver; } @Bean @Description ("Thymeleaf Template Engine") javni SpringTemplateEngine templateEngine () {SpringTemplateEngine templateEngine = novi SpringTemplateEngine (); templateEngine.setTemplateResolver (templateResolver ()); templateEngine.setTemplateEngineMessageSource (messageSource ()); vratiti predložakEngine; }

The templateResolver svojstva graha prefiks i sufiks označite mjesto stranica za prikaz unutar webapp direktorij, odnosno njihov nastavak imena datoteke.

The ViewResolver sučelje u Spring MVC mapira nazive pogleda koje je kontroler vratio u stvarne objekte prikaza. ThymeleafViewResolver provodi ViewResolver sučelje i koristi se za određivanje prikaza Thymeleaf koji će se prikazati, s obzirom na naziv pogleda.

Posljednji korak u integraciji je dodavanje ThymeleafViewResolver kao grah:

@Bean @Description ("Thymeleaf View Resolver") javni ThymeleafViewResolver viewResolver () {ThymeleafViewResolver viewResolver = novi ThymeleafViewResolver (); viewResolver.setTemplateEngine (templateEngine ()); viewResolver.setOrder (1); povratak viewResolver; }

3. Majčina dušica u proljetnim čizmama

Proljetni čizme omogućuje automatsku konfiguraciju za Majčina dušica dodavanjem opruga-čizma-starter-majčina dušica ovisnost:

 org.springframework.boot spring-boot-starter-thymeleaf 2.3.3.Opusti 

Nije potrebna eksplicitna konfiguracija. Prema zadanim postavkama, HTML datoteke trebaju se smjestiti u resursi / predlošci mjesto.

4. Prikazivanje vrijednosti iz izvora poruke (datoteke svojstava)

The th: text = "# {key}" atribut tag može se koristiti za prikaz vrijednosti iz datoteka svojstava. Da bi to uspjelo, datoteka svojstava mora biti konfigurirana kao messageSource grah:

@Bean @Description ("Spring Message Resolver") javni ResourceBundleMessageSource messageSource () {ResourceBundleMessageSource messageSource = novi ResourceBundleMessageSource (); messageSource.setBasename ("poruke"); return messageSource; }

Ovdje je HTML kod Thymeleaf za prikaz vrijednosti povezane s ključem dobrodošli.poruka:

5. Prikazivanje atributa modela

5.1. Jednostavni atributi

The th: text = "$ {attributename}" atribut tag može se koristiti za prikaz vrijednosti atributa modela. Dodajmo atribut modela s imenom vrijeme poslužitelja u klasi kontrolera:

model.addAttribute ("vrijeme poslužitelja", dateFormat.format (novi datum ()));

HTML kôd za prikaz vrijednosti vrijeme poslužitelja atribut:

Trenutno vrijeme je 

5.2. Atributi zbirke

Ako je atribut modela zbirka objekata, th: svaki atribut tag može se koristiti za prevlačenje po njemu. Definirajmo a Student model klasa s dva polja, iskaznica, i Ime:

student javne klase implementira Serializable {private Integer id; privatni naziv niza; // standardni geteri i postavljači}

Sada ćemo dodati popis učenika kao atribut modela u klasi kontrolera:

Popis učenika = novi ArrayList (); // logika za izgradnju modela podataka o studentima.addAttribute ("studenti", studenti);

Napokon, možemo upotrijebiti kôd predloška Thymeleaf za prelazak preko popisa učenika i prikaz svih vrijednosti polja:

6. Uvjetna procjena

6.1. ako i osim ako

The th: if = "$ {condition}" atribut koristi se za prikaz dijela prikaza ako je uvjet zadovoljen. The th: osim ako = "$ {condition}" atribut koristi se za prikaz dijela prikaza ako uvjet nije zadovoljen.

Dodati spol polje do Student model:

student javne klase implementira Serializable {private Integer id; privatni naziv niza; privatni Karakter rod; // standardni geteri i postavljači}

Pretpostavimo da ovo polje ima dvije moguće vrijednosti (M ili F) koje označavaju spol učenika. Ako želimo prikazati riječi "Muški" ili "Ženski" umjesto pojedinačnog znaka, to bismo mogli postići pomoću sljedećeg timileovog koda:

6.2. sklopka i slučaj

The th: prekidač i th: slučaj atributi se koriste za uvjetni prikaz sadržaja koristeći strukturu naredbe switch.

Prethodni kôd mogao bi se prepisati pomoću th: prekidač i th: slučaj atributi:

7. Rukovanje korisničkim unosom

Unosom obrasca može se upravljati pomoću th: action = "@ {url}" i th: objekt = "$ {objekt}" atributi. The th: akcija koristi se za pružanje URL-a radnje obrasca i th: objekt koristi se za određivanje objekta na koji će se vezati poslani podaci obrasca. Pojedinačna polja mapiraju se pomoću th: polje = "* {ime}" atribut, gdje je Ime je odgovarajuće svojstvo objekta.

Za Student klase, možemo stvoriti obrazac za unos:

U gornjem kodu, / saveStudent je URL radnje obrasca i a student je objekt koji sadrži predane podatke obrasca.

The StudentController razred obrađuje predaju obrasca:

@Controller javna klasa StudentController {@RequestMapping (value = "/ saveStudent", method = RequestMethod.POST) javni String saveStudent (@ModelAttribute Student student, BindingResult pogreške, model modela) {// logika za obradu ulaznih podataka}}

U gornjem kodu, @RequestMapping anotacija preslikava metodu kontrolera s URL-om navedenim u obrascu. Komentirana metoda saveStudent () vrši potrebnu obradu za dostavljeni obrazac. The @ModelAttribute napomena veže polja obrasca na student objekt.

8. Prikazivanje pogrešaka u provjeri

The # polja.hasErrors () funkcija se može koristiti za provjeru ima li polje pogrešaka u provjeri. The # polja.pogreške () funkcija se može koristiti za prikaz pogrešaka za određeno polje. Naziv polja je ulazni parametar za obje ove funkcije.

HTML kôd za ponavljanje i prikaz pogrešaka za svako polje u obrascu:

Umjesto naziva polja, gore navedene funkcije prihvaćaju zamjenski znak * ili konstanta svi za označavanje svih polja. The th: svaki atribut koristi se za ponavljanje višestrukih pogrešaka koje mogu biti prisutne za svako od polja.

Prethodni HTML kôd ponovo je napisan pomoću zamjenskog znaka *:

ili pomoću konstante svi:

Slično tome, globalne pogreške u proljeće mogu se prikazati pomoću globalno konstantno.

HTML kôd za prikaz globalnih pogrešaka:

The th: pogreške atribut se također može koristiti za prikaz poruka o pogreškama. Prethodni kôd za prikaz pogrešaka u obrascu može se ponovo napisati pomoću th: pogreške atribut:

9. Korištenje konverzija

Sintaksa dvostruke zagrade {{}} koristi se za formatiranje podataka za prikaz. Ovo koristi formatori konfigurirano za tu vrstu polja u conversionService grah kontekstne datoteke.

Polje imena u Student klasa je formatirana:

Gornji kod koristi NameFormatter klasa, konfigurirana nadjačavanjem addFormatters () metoda iz WebMvcConfigurer sučelje. U tu svrhu naš @Konfiguracija klasa nadjačava WebMvcConfigurerAdapter razred:

@Configuration javna klasa WebMVCConfig proširuje WebMvcConfigurerAdapter {// ... @Override @Description ("Usluga prilagođene pretvorbe") public void addFormatters (Registar FormatterRegistry) {registry.addFormatter (new NameFormatter ()); }}

The NameFormatter razred provodi Proljeće Formatter sučelje.

The # pretvorbe Uslužni program također se može koristiti za pretvaranje objekata za prikaz. Sintaksa funkcije korisnosti je # convertions.convert (objekt, klasa) gdje Objekt pretvara se u Razred tip.

Prikazati student objekt postotak polje s uklonjenim frakcijskim dijelom:

10. Zaključak

U ovom uputstvu vidjeli smo kako integrirati i koristiti Thymeleaf u Spring MVC aplikaciji.

Također smo vidjeli primjere kako prikazati polja, prihvatiti unos, prikazati pogreške provjere valjanosti i pretvoriti podatke za prikaz. Radna verzija koda prikazana u ovom članku dostupna je u spremištu GitHub.