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的优先级是最低的。