Útmutató a ViewResolver tavaszi MVC-hez
1. Áttekintés
Minden MVC keretrendszer lehetőséget nyújt a nézetekkel való együttműködésre.
A Spring ezt a nézetmegoldókon keresztül teszi, amelyek lehetővé teszik a modellek megjelenítését a böngészőben anélkül, hogy a megvalósítást egy adott nézet technológiához kötnék.
A ViewResolver leképezi a nézetek nevét a tényleges nézetekhez.
A tavaszi kerethez pedig jó néhány nézetmegoldó tartozik, pl. InternalResourceViewResolver, XmlViewResolver, ResourceBundleViewResolver és még néhányan.
Ez egy egyszerű bemutató, amely bemutatja a leggyakoribb nézetmegoldók és hogyan kell használni a többszöröset ViewResolver azonos konfigurációban.
2. A tavaszi webkonfiguráció
Kezdjük a webkonfigurációval; azzal jegyzeteljük @EnableWebMvc, @ Konfiguráció és @ComponentScan:
@EnableWebMvc @Configuration @ComponentScan ("com.baeldung.web") public class WebConfig implementálja a WebMvcConfigurer {// Minden webkonfiguráció ide fog menni}
Itt állítjuk be a nézetmegoldót a konfigurációban.
3. Adjon hozzá egy InternalResourceViewResolver
Ez ViewResolver lehetővé teszi számunkra, hogy olyan tulajdonságokat állítsunk be, mint az előtag vagy az utótag, a nézet nevéhez a végső nézet oldal URL-jének létrehozásához:
@Bean public ViewResolver internalResourceViewResolver () {InternalResourceViewResolver bean = new InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / nézet /"); bean.setSuffix (". jsp"); visszatérő bab; }
A példa ilyen egyszerűsége érdekében nincs szükségünk vezérlőre a kérés feldolgozásához.
Csak egy egyszerűre van szükségünk jsp oldal, a / WEB-INF / nézet a konfigurációban meghatározott mappa:
4. Adja hozzá a ResourceBundleViewResolver
Ahogy ennek a megoldónak a neve sugallja a ResourceBundleViewResolver babdefiníciókat használ az a ResourceBundle.
Először hozzáadjuk a ResourceBundleViewResolver az előző konfigurációra:
@Bean public ViewResolver resourceBundleViewResolver () {ResourceBundleViewResolver bean = new ResourceBundleViewResolver (); bean.setBasename ("nézetek"); visszatérő bab; }
A csomagot általában egy tulajdonságfájlban definiálják, amely az osztályútvonalon található. Az alábbiakban a nézetek.tulajdonságok fájl:
minta. (osztály) = org.springframework.web.servlet.view.JstlView sample.url = / WEB-INF / view / sample.jsp
Használhatjuk az egyszerűt jsp a fenti példában definiált oldal ehhez a konfigurációhoz is.
5. Adjon hozzá egy XmlViewResolver
A ViewResolver a konfigurációs fájlt elfogadja XML ugyanazzal DTD mint a tavaszi XML babgyárak:
@Bean public ViewResolver xmlViewResolver () {XmlViewResolver bean = new XmlViewResolver (); bean.setLocation (új ClassPathResource ("views.xml")); visszatérő bab; }
Az alábbiakban található a konfigurációs fájl, views.xml:
Ami az előző példákat illeti, használhatjuk egyszerűnket jsp korábban definiált oldal.
6. Láncolás ViewResolvers és definiáljon egy rendelési prioritást
A tavaszi MVC is támogatja több nézet felbontó.
Ez lehetővé teszi, hogy bizonyos körülmények között felülbírálja a konkrét nézeteket. Egyszerűen láncolhatjuk a nézetfeloldókat úgy, hogy egynél több felbontót adunk a konfigurációhoz.
Miután ezt megtettük, meg kell határoznunk a sorrendet ezeknek a megoldóknak. A rendelés ingatlan arra szolgál, hogy meghatározzuk, melyik a láncban az invokációk sorrendje. Minél magasabb a rendelés tulajdonság (a legnagyobb rendelési szám), annál később helyezkedik el a nézetfeloldó a láncban.
A sorrend megadásához hozzáadhatjuk a következő kódsort a nézetmegoldóink konfigurációjához:
bab.setOrder (0);
Vigyázzon a rendelési prioritásra, mint a InternalResourceViewResolver magasabb sorrendűnek kell lennie - mert ez egy nagyon explicit leképezést kíván képviselni. És ha más megoldók magasabb rendűek, akkor a InternalResourceViewResolver lehet, hogy soha nem hivatkoznak rá.
7. Következtetés
Ebben az oktatóanyagban konfiguráltunk egy nézetfeloldó láncot a Java konfigurációval. A rendelési prioritással játszva beállíthatjuk meghívásuk sorrendjét.
Ennek az egyszerű oktatóanyagnak a megvalósítása megtalálható a github projektben.