springmvc如何设置多视图器(ViewResolver)

下面以jsp、freemarker举例:

Springmvc整合freemarker:https://blog.csdn.net/fd2025/article/details/80409991

   <!--配置jsp视图解析器 -->
    <bean id="viewResolverCommon" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp"/><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑  -->
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="order" value="1"/>
    </bean>
    <!-- 配置freeMarker视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="viewClass"
            value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
        <property name="prefix" value=""/><!-- 上面已经配了,这里就不用配啦 -->
        <property name="contentType" value="text/html; charset=utf-8" />
        <property name="requestContextAttribute" value="request" />
        <property name="suffix" value=".ftl" />
        <property name="order" value="0"/>
    </bean>

只要在viewResolver中配置 order 即可;

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

注意:

  • order中的值越小,优先级越高。

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

如果某个解析器没有找到合适的视图,Spring会在上下文中寻找是否配置了其它的解析器。 如果有,它会继续进行解析,否则,Srping会抛出一个Exception。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/fd2025/article/details/80623269