Početak rada s obrascima u proljetnom MVC-u

1. Pregled

U ovom ćemo članku razgovarati o proljetnim obrascima i vezivanju podataka za kontroler. Također ćemo pogledati jednu od glavnih bilješki u Proljetni MVC tj. @ModelAttribute.

Naravno, Spring MVC je složena tema s puno stvari koje trebate razumjeti da biste ga iskoristili u punom potencijalu, zato svakako ovdje dublje uđite u okvir.

2. Model

Prvo - definirajmo jednostavan entitet da ćemo prikazati i vezati se za obrazac:

zaposlenik u javnoj klasi {private String name; privatni dugi ID; private String contactNumber; // standardni geteri i postavljači}

Ovo će biti naš objekt koji podupire obrazac.

3. Pogled

Dalje - definirajmo stvarni oblik, i naravno, HTML datoteka koja je sadrži. Koristit ćemo stranicu na kojoj se stvara / registrira novi zaposlenik:

Dobrodošli, unesite podatke o zaposleniku

Ime
Iskaznica
Kontakt broj

Prvo - primijetite da na našu JSP stranicu uključujemo biblioteku oznaka - oblik taglib - za pomoć u definiranju našeg oblika.

Dalje - oznaka ovdje igra važnu ulogu; vrlo je sličan uobičajenom HTLM-u oznaka, ali modelAttribute atribut je ključ koji navodi ime objekta modela koji podupire ovaj obrazac:

Ovo će odgovarati @ModelAttribute kasnije u kontroloru.

Dalje - svako polje za unos koristi još jednu korisnu oznaku iz tagliba Spring Spring - oblik: prefiks. Svako od ovih polja navodi a staza atribut - ovo mora odgovarati geteru / postavljaču atributa modela (u ovom slučaju, klasi zaposlenika). Kada se stranica učita, polja za unos popunjava Spring, koja poziva getera svakog polja vezanog za polje za unos. Kada se obrazac preda, postavljatelji se pozivaju da vrijednosti obrasca spreme u objekt.

Napokon - kada predaje se obrazac, poziva se obrađivač POST u kontroleru i obrazac se automatski veže na zaposlenik argument koji smo proslijedili.

4. Upravljač

Pogledajmo sada kontrolor koji će se nositi sa stražnjim krajem:

@Controller javna klasa EmployeeController {@RequestMapping (value = "/ zaposlenik", method = RequestMethod.GET) public ModelAndView showForm () {return new ModelAndView ("workerHome", "zaposlenik", novi zaposlenik ()); } @RequestMapping (value = "/ addE Employee", method = RequestMethod.POST) public String submit (@Valid @ModelAttribute ("worker") Zaposlenik zaposlenika, BindingResult rezultat, ModelMap model) {if (result.hasErrors ()) {return "pogreška"; } model.addAttribute ("name", worker.getName ()); model.addAttribute ("contactNumber", worker.getContactNumber ()); model.addAttribute ("id", worker.getId ()); povratak "workerView"; }}

Upravljač definira dvije jednostavne operacije - GET za prikaz podataka u obrascu i POST za operaciju izrade putem slanja obrasca.

Također imajte na umu da ako se objekt nazvan "zaposlenik" ne doda u model, Spring će se žaliti kad pokušamo pristupiti JSP-u jer će JSP biti postavljen da veže obrazac na atribut modela "zaposlenik":

java.lang.IllegalStateException: Ni BindingResult ni obični ciljni objekt za ime graha 'zaposlenik' nisu dostupni kao atribut zahtjeva na o.s.w.s.s.BindStatus. (BindStatus.java:141) 

Da bismo pristupili našem potpornom objektu, moramo ga ubrizgati putem @ModelAttribute bilješka.

An @ModelAttribute na argumentu argumenta označava da će se argument preuzeti iz modela. Ako nije prisutan u modelu, argument će se prvo instancirati, a zatim dodati modelu.

5. Rukovanje pogreškama vezanja

Prema zadanim postavkama Spring MVC baca iznimku kada se tijekom vezivanja zahtjeva pojave pogreške. To obično nije ono što želimo, već bismo te pogreške trebali predstavljati korisniku. Koristit ćemo a BindingResult dodavanjem jednog kao argumenta našoj metodi kontrolera:

javni String submit (@Valid @ModelAttribute ("zaposlenik") Zaposlenik zaposlenik, BindingResult rezultat, ModelMap model)

The BindingResult argument treba postaviti odmah nakon našeg objekta koji podupire obrazac - to je jedan od rijetkih slučajeva kada je redoslijed argumenata metode važan. Inače ćemo naići na sljedeću iznimku:

java.lang.IllegalStateException: Argumenti o pogreškama / BindingResult deklarirani bez prethodnog atributa modela. Provjerite potpis metode obrađivača!

Sada - izuzetak se više ne baca; umjesto toga, pogreške će biti registrirane na BindingResult koji se prenosi na podnijeti metoda. U ovom trenutku s tim se pogreškama možemo nositi na razne načine - na primjer, operacija se može otkazati:

@RequestMapping (value = "/ addEfficiee", method = RequestMethod.POST) public String submit (@Valid @ModelAttribute ("worker") zaposlenik zaposlenika, BindingResult result, ModelMap model) {if (result.hasErrors ()) {return " pogreška "; } // Učiniti nešto vratiti "workerView"; }

Primijetite kako, u slučaju da rezultat sadrži pogreške, vraćamo drugi pogled korisniku kako bismo ispravno prikazali te pogreške. Pogledajmo taj pogled - pogreška.jsp:

Unesite točne podatke

Pokušaj ponovo

6. Prikazivanje zaposlenika

Napokon, osim stvaranja novog zaposlenika, možemo ga i jednostavno prikazati - evo koda za brzi pregled za to:

Podneseni podaci o zaposleniku

Ime :$ {name}
ISKAZNICA :$ {id}
Kontakt broj :$ {contactNumber}

JSP stranica jednostavno koristi EL izraze za prikaz vrijednosti svojstava zaposleničkog objekta u modelu.

7. Testiranje aplikacije

Jednostavna aplikacija može se implementirati - na primjer na Tomcat poslužitelju - i pristupiti joj lokalno:

// localhost: 8080 / spring-mvc-xml / zaposlenik

Ovo je prikaz koji sadrži glavni obrazac - prije operacije slanja:

Primjer proljetnog MVC obrasca - Pošaljite

Nakon slanja, prikazuju se podaci:

Primjer proljetnog MVC obrasca - Pogled

I to je to - radni primjer jednostavnog oblika s Spring MVC, s provjerom valjanosti.

Provedbu ovog proljetnog MVC vodiča možete pronaći u projektu GitHub - ovo je projekt zasnovan na Mavenu, pa bi ga trebalo lako uvesti i pokrenuti kakav jest.

Konačno, kao što sam rekao na početku članka, svakako biste trebali dublje istražiti Spring MVC.