Vodič za ViewResolver u proljetnom MVC-u

1. Pregled

Svi MVC okviri pružaju način rada s pogledima.

Spring to čini putem rezolutora pogleda, koji vam omogućuju prikazivanje modela u pregledniku bez vezivanja implementacije za određenu tehnologiju prikaza.

The ViewResolver preslikava nazive pogleda u stvarne poglede.

A Spring Spring dolazi s podosta rješavača pogleda, na pr. InternalResourceViewResolver, XmlViewResolver, ResourceBundleViewResolver i nekoliko drugih.

Ovo je jednostavan vodič koji pokazuje kako postaviti najčešće razrješivače pogleda i kako se koristiti višestrukim ViewResolver u istoj konfiguraciji.

2. Proljetna web konfiguracija

Počnimo s web konfiguracijom; napomenut ćemo s @EnableWebMvc, @Konfiguracija i @ComponentScan:

@EnableWebMvc @Configuration @ComponentScan ("com.baeldung.web") javna klasa WebConfig implementira WebMvcConfigurer {// Sve web konfiguracije ići će ovdje}

Ovdje ćemo postaviti naš razrješivač pogleda u konfiguraciji.

3. Dodajte znak InternalResourceViewResolver

Ovaj ViewResolver omogućuje nam postavljanje svojstava kao što su prefiks ili sufiks na ime pogleda kako bismo generirali konačni URL stranice prikaza:

@Bean public ViewResolver internalResourceViewResolver () {InternalResourceViewResolver bean = new InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / view /"); bean.setSuffix (". jsp"); grah za povratak; }

Za takvu jednostavnost primjera ne treba nam kontroler za obradu zahtjeva.

Trebamo samo jednostavan jsp stranica, smještena u / WEB-INF / prikaz mapa kako je definirana u konfiguraciji:

4. Dodajte a ResourceBundleViewResolver

Kao što naziv ovog rješavača sugerira a ResourceBundleViewResolver koristi definicije graha u a ResourceBundle.

Prvo, dodamo ResourceBundleViewResolver na prethodnu konfiguraciju:

@Bean public ViewResolver resourceBundleViewResolver () {ResourceBundleViewResolver bean = new ResourceBundleViewResolver (); bean.setBasename ("prikazi"); grah za povratak; } 

Snop je obično definiran u datoteci svojstava koja se nalazi na putu predavanja. Ispod je pogleda.svojstva datoteka:

sample. (class) = org.springframework.web.servlet.view.JstlView sample.url = / WEB-INF / view / sample.jsp

Možemo se poslužiti jednostavnim jsp stranicu definiranu u gornjem primjeru i za ovu konfiguraciju.

5. Dodajte an XmlViewResolver

Ova provedba ViewResolver prihvaća konfiguracijsku datoteku napisanu u XML s istim DTD kao Proljeće XML tvornice graha:

@Bean public ViewResolver xmlViewResolver () {XmlViewResolver bean = new XmlViewResolver (); bean.setLocation (novi ClassPathResource ("views.xml")); grah za povratak; }

Ispod je konfiguracijska datoteka, views.xml:

Što se tiče prethodnih primjera, možemo se poslužiti našim jednostavnim jsp stranica prethodno definirana.

6. Ulančavanje ViewResolvers i definirajte prioritet narudžbe

Proljetni MVC također podržava višestruki rješavači pogleda.

To vam omogućuje da u nekim okolnostima nadjačate određene poglede. Jednostavno možemo povezati razrešivače prikaza dodavanjem više od jednog razrješivača u konfiguraciju.

Nakon što to učinimo, morat ćemo definirati redoslijed za ove rješavače. The narudžba imovine koristi se za definiranje redoslijeda zazivanja u lancu. Što je svojstvo naloga veće (najveći broj naloga), razrješivač prikaza kasnije se postavlja u lanac.

Da bismo definirali redoslijed možemo dodati sljedeći redak koda u konfiguraciju naših razrješivača prikaza:

bean.setOrder (0);

Budite oprezni s prioritetom narudžbe kao InternalResourceViewResolver treba imati viši poredak - jer je namijenjen predstavljanju vrlo eksplicitnog mapiranja. A ako drugi rješavači imaju viši poredak, tada InternalResourceViewResolver možda se nikad neće pozvati.

7. Zaključak

U ovom smo tutorijalu konfigurirali lanac pregledača pomoću Java konfiguracije. Poigravanjem s prioritetom naloga možemo postaviti redoslijed njihovog pozivanja.

Provedbu ovog jednostavnog vodiča možete pronaći u projektu github.