您的位置:首页 > 编程语言 > Java开发

Spring Web MVC 多viewResolver解决方案

2015-11-05 14:16 561 查看
viewResolver的定义如下:

[java] view
plaincopy

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就可以了。如:

[xhtml] view
plaincopy

<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的优先级是最低的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: