Spring Web MVC 多viewResolver解决方案

viewResolver的定义如下:

public interface ViewResolver { View resolveViewName(String viewName, Locale locale) throws Exception; }

 

在spring 中,常用的ViewResolver 有如下几种:

InternalResourceViewResolver 将逻辑视图名字解析为一个路径
BeanNameViewResolver 将逻辑视图名字解析为bean的Name属性,从而根据name属性,找定义View的bean
ResourceBundleResolver 和BeanNameViewResolver一样,只不过定义的view-bean都在一个properties文件中,用这个类进行加载这个properties文件
XmlViewResolver 和ResourceBundleResolver一样,只不过定义的view-bean在一个xml文件中,用这个类来加载xml文件

 

当我们需要多个viewResolver的时候,spring 框架为我们提供了很好的支持,我们只要在[spring-dispatcher-name]-servlet.xml中定义多个ViewResolver就可以了。如:

<bean id="viewResolver2" class="org.springframework.web.servlet.view.jangod.JangodViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.jangod.JangodView" /> <property name="exposeRequestAttributes" value="true" /> <property name="allowRequestOverride" value="false" /> <property name="exposeSessionAttributes" value="true" /> <property name="allowSessionOverride" value="false" /> <property name="jangodConfig" ref="jangodConfig" /> <property name="commonAttributes" ref="commonDatas" /> <property name="prefix" value="/WEB-INF/pages/" /> <!-- <property name="suffix" value=".html" /> --> <property name="order" value="0" /> </bean> <bean id="viewsResolver" class="org.springframework.web.servlet.view.XmlViewResolver"> <property name="order" value="1" /> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="order" value="2" /> </bean>

 

DispatcherServlet会加载所有的viewResolver到一个list中,并按照优先级进行解析。

注意:①order中的值越小,优先级越高。

   ②而id为viewResolver的viewResolver的优先级是最低的。

 

 

 

 

 

 

 

 

你可能感兴趣的:(spring,Web,mvc,exception,properties,Class)