Az űrlapok használatának megkezdése a tavaszi MVC-ben
1. Áttekintés
Ebben a cikkben a tavaszi űrlapokat és az adatok vezérlőhöz való kötését tárgyaljuk. Ezenkívül megnézzük az egyik fő annotációt Tavaszi MVC azaz @ModelAttribute.
Természetesen a Spring MVC egy összetett téma, rengeteg dologgal, amelyet meg kell értenie ahhoz, hogy teljes mértékben kiaknázza, ezért mindenképpen mélyebbre ásson bele a keretrendszerbe.
2. A modell
Először - határozzuk meg egyszerű entitás hogy meg fogjuk jeleníteni az űrlapot és ehhez kötődni fogunk:
public class Alkalmazott {private String név; privát hosszú id; privát karakterlánc contactNumber; // szabványos mérőeszközök és beállítók}
Ez lesz a formát támogató objektumunk.
3. A nézet
Következő - definiáljuk a tényleges forma, és természetesen az azt tartalmazó HTML fájl. Olyan oldalt fogunk használni, ahol új alkalmazottat hoznak létre / regisztrálnak:
Üdvözöljük, adja meg az alkalmazottak adatait
Név Id Elérhetőség
Először - vegye észre, hogy egy címkekönyvtárat is felveszünk a JSP oldalunkra - forma taglib - hogy segítsen formánk meghatározásában.
Következő - a a címke itt fontos szerepet játszik; nagyon hasonlít a szokásos HTLM-re tag, de a modelAttribute attribútum az a kulcs, amely megadja annak a modellobjektumnak a nevét, amely támogatja ezt az űrlapot:
Ez megfelel a @ModelAttribute később a vezérlőben.
Következő - minden beviteli mező egy másik hasznos címkét használ a Spring Form taglib-ből - forma: előtag. Ezen mezők mindegyike meghatározza a pálya tulajdonság - ennek meg kell felelnie a modell attribútum getter / setter-jének (ebben az esetben az Employee osztálynak). Az oldal betöltésekor a beviteli mezőket Spring írja be, amely az egyes mezők getterét behívja egy bemeneti mezőhöz. Az űrlap benyújtásakor a beállítókat felkérik, hogy mentse az űrlap értékeit az objektumba.
Végül - mikor az űrlapot benyújtják, a vezérlőben lévő POST kezelő meghívásra kerül, és az űrlap automatikusan a munkavállaló érv, amelyet átadtunk.
4. A vezérlő
Most nézzük meg a Vezérlő ez fogja kezelni a hátulját:
@Controller public class EmployeeController {@RequestMapping (érték = "/ alkalmazott", módszer = RequestMethod.GET) nyilvános ModelAndView showForm () {return new ModelAndView ("alkalmazottHome", "alkalmazott", új alkalmazott ()); } @RequestMapping (value = "/ addEmployee", metódus = RequestMethod.POST) public String beküldése (@Valid @ModelAttribute ("alkalmazott") Alkalmazott alkalmazott, BindingResult eredmény, ModelMap modell) {if (result.hasErrors ()) {return "hiba"; } model.addAttribute ("név", worker.getName ()); model.addAttribute ("contactNumber", worker.getContactNumber ()); model.addAttribute ("id", worker.getId ()); return "workerView"; }}
A vezérlő két egyszerű műveletet határoz meg - a GET-et az adatok űrlapon történő megjelenítéséhez, és a POST-ot a létrehozási művelethez az űrlap beküldése útján.
Vegye figyelembe azt is, hogy ha az „alkalmazott” nevű objektum nem kerül hozzáadásra a modellhez, Spring panaszt fog tenni, amikor megpróbálunk hozzáférni a JSP-hez, mert a JSP-t úgy állítják be, hogy az űrlapot az „alkalmazotti” modell attribútumhoz kösse:
java.lang.IllegalStateException: Sem az BindingResult, sem a sima „alkalmazott” sima objektum nem érhető el kérelemattribútumként az o.s.w.s.s.BindStatus címen. (BindStatus.java:141)
Az űrlaptámogató objektumhoz való hozzáféréshez be kell injektálnunk a @ModelAttribute annotáció.
An @ModelAttribute
A method argumentum azt jelzi, hogy az argumentum lekérésre kerül a modellből. Ha nincs jelen a modellben, akkor az argumentum először példányos lesz, majd hozzáadódik a modellhez.
5. Kötési hibák kezelése
Alapértelmezés szerint a Spring MVC kivételt vet ki, ha hibák fordulnak elő a kérés-összerendelés során. Ez általában nem az, amit akarunk, ehelyett ezeket a hibákat kell bemutatnunk a felhasználónak. Használjuk a BindingResult hozzáadva egyet argumentumként a kontroller módszerünkhöz:
nyilvános karakterlánc beküldése (@Valid @ModelAttribute ("alkalmazott") Alkalmazott alkalmazott, BindingResult eredmény, ModelMap modell)
A BindingResult argumentumot közvetlenül az űrlaptámogató objektumunk után kell elhelyezni - ez az egyik ritka eset, amikor a metódus argumentumainak sorrendje számít. Ellenkező esetben a következő kivételt fogjuk tapasztalni:
java.lang.IllegalStateException: Errors / BindingResult argumentum deklarálva a modellattribútum megelözése nélkül. Ellenőrizze a kezelő módszer aláírását!
Most - egy kivételt már nem dobnak; ehelyett a rendszer regisztrálja a hibákat BindingResult hogy átadják a Beküldés módszer. Ezen a ponton ezeket a hibákat különféle módokon kezelhetjük - például a művelet törölhető:
@RequestMapping (value = "/ addEmployee", metódus = RequestMethod.POST) nyilvános karakterlánc beküldése (@Valid @ModelAttribute ("alkalmazott") Alkalmazott alkalmazott, BindingResult eredmény, ModelMap modell) {if (result.hasErrors ()) {return " hiba"; } // Csinálj valamit, adja vissza a "workerView" szót; }
Figyelje meg, hogy ha az eredmény hibákat tartalmaz, visszaküldünk egy másik nézetet a felhasználónak a hibák megfelelő megjelenítéséhez. Vessünk egy pillantást erre a nézetre - hiba.jsp:
Kérjük, adja meg a helyes adatokat
Próbálja újra
6. Alkalmazott megjelenítése
Végül egy új alkalmazott létrehozása mellett egyszerűen megjeleníthetünk egyet is - íme a gyors nézet kódja ehhez:
Beküldött munkavállalói információk
Név: $ {name} Azonosító: $ {id} Elérhetőség : $ {contactNumber}
A JSP oldal egyszerűen EL kifejezéseket használ az Employee objektum tulajdonságainak értékeinek megjelenítésére a modellben.
7. Az alkalmazás tesztelése
Az egyszerű alkalmazás telepíthető - például egy Tomcat szerveren -, és helyileg elérhető:
// localhost: 8080 / spring-mvc-xml / alkalmazott
Ez a nézet tartalmazza a fő űrlapot - a beküldési művelet előtt:

Példa az MVC űrlapra - Küldés
A beküldés után az adatok megjelennek:

Példa az MVC űrlapra - nézet
És ez az - működő példa egy egyszerű űrlapra Spring MVC-vel, érvényesítéssel.
Ennek a tavaszi MVC oktatóanyagnak a megvalósítása megtalálható a GitHub projektben - ez egy Maven-alapú projekt, ezért könnyen importálhatónak és futtathatónak kell lennie.
Végül, amint a cikk elején mondtam, mindenképpen mélyebbre kell ásni a tavaszi MVC-ben.