Ú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.