Sprievodca po ViewResolver na jar MVC

1. Prehľad

Všetky rámce MVC poskytujú spôsob práce s pohľadmi.

Spring to robí pomocou prekladačov pohľadov, ktoré vám umožňujú vykresľovať modely v prehliadači bez viazania implementácie na konkrétnu technológiu zobrazenia.

The ViewResolver mapuje názvy pohľadov na skutočné pohľady.

A jarný rámec prichádza s pomerne veľa riešeniami pohľadov, napr. InternalResourceViewResolver, XmlViewResolver, ResourceBundleViewResolver a niekoľko ďalších.

Toto je jednoduchý výukový program, ktorý ukazuje, ako nastaviť najbežnejšie prekladače pohľadov a ako používať viac ViewResolver v rovnakej konfigurácii.

2. Jarná konfigurácia webu

Začnime s webovou konfiguráciou; budeme to anotovať @EnableWebMvc, @ Konfigurácia a @ComponentScan:

@EnableWebMvc @Configuration @ComponentScan ("com.baeldung.web"), verejná trieda WebConfig implementuje WebMvcConfigurer {// Celá konfigurácia webu sa zobrazí tu}

Tu nastavíme v konfigurácii náš rezolver pohľadu.

3. Pridajte znak InternalResourceViewResolver

Toto ViewResolver umožňuje nám nastaviť vlastnosti, ako je predpona alebo prípona k názvu zobrazenia, aby sme vygenerovali adresu URL stránky konečného zobrazenia:

@Bean public ViewResolver internalResourceViewResolver () {InternalResourceViewResolver bean = nový InternalResourceViewResolver (); bean.setViewClass (JstlView.class); bean.setPrefix ("/ WEB-INF / view /"); bean.setSuffix (". jsp"); spätná fazuľa; }

Pre jednoduchosť príkladu nepotrebujeme na spracovanie žiadosti kontrolór.

Potrebujeme iba jednoduchý jsp stránka umiestnená na / WEB-INF / zobraziť priečinok, ako je definované v konfigurácii:

4. Pridajte a ResourceBundleViewResolver

Ako naznačuje názov tohto prekladača a ResourceBundleViewResolver používa definície fazule v a ResourceBundle.

Najskôr pridáme ResourceBundleViewResolver na predchádzajúcu konfiguráciu:

@Bean public ViewResolver resourceBundleViewResolver () {ResourceBundleViewResolver bean = nový ResourceBundleViewResolver (); bean.setBasename ("zobrazenia"); spätná fazuľa; } 

Zväzok je zvyčajne definovaný v súbore vlastností umiestnenom v ceste triedy. Nižšie je pohľady.vlastnosti spis:

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

Môžeme použiť jednoduché jsp stránka definovaná vo vyššie uvedenom príklade aj pre túto konfiguráciu.

5. Pridajte znak XmlViewResolver

Táto implementácia ViewResolver prijíma konfiguračný súbor napísaný v XML s tým istým DTD ako Spring’s XML továrne na fazuľa:

@Bean public ViewResolver xmlViewResolver () {XmlViewResolver bean = nový XmlViewResolver (); bean.setLocation (nový ClassPathResource ("views.xml")); spätná fazuľa; }

Nižšie je uvedený konfiguračný súbor, views.xml:

Pokiaľ ide o predchádzajúce príklady, môžeme použiť náš jednoduchý jsp predtým definovaná stránka.

6. Reťazenie ViewResolvers a Definujte prioritu objednávky

Podporuje aj jarné MVC riešenie viacerých zobrazení.

To vám za určitých okolností umožňuje prepísať konkrétne názory. Rozkladače reťazových pohľadov môžeme jednoducho zreťaziť tak, že do konfigurácie pridáme viac ako jeden prekladač.

Len čo to urobíme, budeme musieť definovať poradie pre týchto riešiteľov. The objednať nehnuteľnosť sa používa na definovanie poradia vyvolania v reťazci. Čím vyššia je vlastnosť objednávky (najväčšie číslo objednávky), tým neskôr je v reťazci umiestnený rezolver pohľadu.

Na definovanie poradia môžeme do konfigurácie našich prekladačov pohľadov pridať nasledujúci riadok kódu:

bean.setOrder (0);

Buďte opatrní pri priorite objednávky ako InternalResourceViewResolver by mal mať vyššie poradie - pretože má predstavovať veľmi explicitné mapovanie. A ak majú iní riešitelia vyššiu objednávku, potom InternalResourceViewResolver nemusí byť nikdy vyvolaná.

7. Záver

V tomto tutoriáli sme nakonfigurovali reťazec prekladačov pohľadu pomocou konfigurácie Java. Hraním s prioritou objednávky môžeme nastaviť poradie ich vyvolania.

Implementáciu tohto jednoduchého tutoriálu nájdete v projekte github.


$config[zx-auto] not found$config[zx-overlay] not found