Spring web MVC 框架學(xué)習(xí)筆記 之 ViewResolver技術(shù)
上次的文章中介紹了ModelAndView對(duì)象中的view對(duì)象,可以使用字符串來讓Spring框架進(jìn)行解析獲得適合的視圖。而解析View的就是ViewResolver技術(shù)。
ViewResolver的定義如下:
public interface ViewResolver {
View resolveViewName(String viewName, Locale locale) throws Exception;
}
在[spring-dispatcher-name]-servlet.xml中,可以定義viewResolver:
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"/>
<property
name="suffix" value=".jsp"/>
</bean>
來讓DispacherServlet進(jìn)行加載默認(rèn)的viewResolver,如果沒有設(shè)置viewResolver,spring使用InternalResourceViewResolver進(jìn)行解析。
Spring實(shí)現(xiàn)ViewResolver的非抽象類且我們經(jīng)常使用的viewResolver有以下四種:
InternalResourceViewResolver | 將邏輯視圖名字解析為一個(gè)路徑 |
BeanNameViewResolver | 將邏輯視圖名字解析為bean的Name屬性,從而根據(jù)name屬性,找定義View的bean |
ResourceBundleResolver | 和BeanNameViewResolver一樣,只不過定義的view-bean都在一個(gè)properties文件中,用這個(gè)類進(jìn)行加載這個(gè)properties文件 |
XmlViewResolver | 和ResourceBundleResolver一樣,只不過定義的view-bean在一個(gè)xml文件中,用這個(gè)類來加載xml文件 |
使用多視圖解析器:
我們不想只使用一種視圖解析器的話,可以在[spring-dispatcher-name]-servlet.xml定義多個(gè)viewResolver:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id=”beanNameViewResolver” class=”...BeanNameViewResolver”>
<property name="order" value="1"></property>
</bean>
<bean id=”beanNameViewResolver” class=”...XmlViewResolver”>
<property name="order" value="0"></property>
</bean>
DispatcherServlet會(huì)加載所有的viewResolver到一個(gè)list中,并按照優(yōu)先級(jí)進(jìn)行解析。注意order中的值越小,優(yōu)先級(jí)越高。而id為viewResolver
的viewResolver的優(yōu)先級(jí)是最低的。
posted on 2009-11-27 12:11 追求無止境 閱讀(6881) 評(píng)論(1) 編輯 收藏 所屬分類: Java EE