Výběr pohledu

Řekli jsme si, že detektory pohledu (instance rozhraní ViewResolver) mají za úkol transformaci logického názvu pohledu na konkrétní šablonu. Ukážeme si příklad definice dvojice objektů typu ViewResolver:

<bean id="resourceBundleViewResolver" 
  class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
  <property name="order" value="1"/>
  <property name="basename" value="views"/>
</bean>

<bean id="jstlViewResolver" 
  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="order" value="2"/>
  <property name="viewClass" 
            value="org.springframework.web.servlet.view.JstlView"/>
  <property name="prefix" value="/WEB-INF/jsp/"/>     
  <property name="suffix" value=".jsp"/>
</bean>

Logický název pohledu vrácený kontrolerem bude v takovémto případě nejdříve zkontrolován, zda náhodou nezačíná prefixem „redirect:“. Pokud ano, pak dojde ke klasickému HTTP přesměrování na adresu uvedenou za prefixem „redirect:“. V opačném případě bude logický název předán objektu typu ResourceBundleViewResolver a pokud ten neurčí konkrétní šablonu pohledu, tak na řadu přijde objekt typu InternalResourceViewResolver.

V případě definice s id resourceBundleViewResolver definujeme vlastnost basename, která určuje základní název pro příslušný ResourceBundle. Konkrétní properties soubor je vybrán na základě instance Locale získané prostřednictvím definovaného detektoru národního prostředí (objektu typu LocaleResolver). Například bude-li mít aktuální Locale vnitřní hodnotu en_US, tak nejdříve bude v classpath vyhledán soubor views_en_US.properties. Nenachází-li se tam, pak bude vyhledán soubor views_en.properties a posledním článkem řetězu je defaultní views.properties. Nalezený soubor pak obsahuje definice tříd a URL pro logické názvy. Například properties soubor s obsahem:

login.class=org.springframework.web.servlet.view.JstlView
login.url=/WEB-INF/jsp/login.jsp
logout.class=org.springframework.web.servlet.view.InternalResourceView
logout.url=/WEB-INF/jsp/logout.jsp

V tomto případě je logický název login transformován na JSTL šablonu ve specifikovaném umístění a logický název logout pak na klasickou JSP šablonu (bez JSTL podpory).

Definovaný objekt s id jstlViewResolver se naproti tomu pokusí transformovat logický název tak, že k němu předřadí zadaný prefix a přiřadí zadaný sufix. Existuje-li šablona ve výsledné cestě, je použita.

V přiložené vzorové aplikaci lze definici detektoru pohledu nalézt v souboru WEB-INF\spring\webApplicationContext-common.xml.

Komentáře

Téma neobsahuje žádné komentáře.

Vložit komentář

Můžete používat značkovací jazyk Texy!


Jméno:
E-mail:
Url:
Komentář:
1 + 2 =
 
MoroSystems, s.r.o.