SpringMVC配置多个模板视图解析器-阿里云开发者社区

开发者社区> 开发与运维> 正文

SpringMVC配置多个模板视图解析器

简介:

之前在Spring MVC的Web工程下配置了多个视图解析器,但只生效了一个。重新研究了下,这里介绍了了同时配置velocity和html和jsp三种模板视图解析器。

详细配置方法见代码:

    <!-- 3:配置多个ViewResolver视图解析 -->
    <!-- 3.1 配置velocity的配置信息 -->
    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <!-- 这里的路径回合下面layoutUrl和prefix中的路径组合 -->
        <property name="resourceLoaderPath" value="/"/>
        <property name="velocityProperties">
            <props>
                <prop key="input.encoding">UTF-8</prop>
                <prop key="output.encoding">UTF-8</prop>
                <prop key="contentType">text/html;charset=UTF-8</prop>
            </props>
        </property>
    </bean>
    <!-- 3.2 配置多个视图解析 -->
    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="viewResolvers">
            <list>
                <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
                    <property name="cache" value="true"/>
                    <!-- velocity的order要小于jsp的,velocity和html的order优先级大小无所谓,都能正常解析并显示 -->
                    <property name="order" value="2"/>
                    <property name="suffix" value=".vm"/>
                    <!-- 这里的路径会加上resourceLoaderPath的路径 -->
                    <property name="layoutUrl" value="/WEB-INF/velocity/layout/default.vm"/>
                    <property name="prefix" value="/WEB-INF/velocity/"/>
                    <property name="contentType" value="text/html;charset=UTF-8"/>
                </bean>

                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
                    <property name="prefix" value="/WEB-INF/jsp/"/>
                    <property name="suffix" value=".jsp"/>
                    <!-- 注意:JSP的优先级要最低,即order要大,否则,HTML和velocity的页面会被解析到*.jsp -->
                    <property name="order" value="3" />
                </bean>

                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="viewClass" value="org.knight.common.HtmlResourceView"/>
                    <property name="prefix" value="/WEB-INF/html/"/>
                    <property name="suffix" value=".html"/>
                    <!-- 注意:自定义的HTML一定要比JSF的优先级高,即order要小,否则,HTML的页面会被解析成jsp -->
                    <property name="order" value="1" />
                </bean>
            </list>
        </property>
    </bean>

详细见Github代码:https://github.com/wayss000/WebDemo/tree/v1.0.0

版权声明:本文首发在云栖社区,遵循云栖社区版权声明:本文内容由互联网用户自发贡献,版权归用户作者所有,云栖社区不为本文内容承担相关法律责任。云栖社区已升级为阿里云开发者社区。如果您发现本文中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,阿里云开发者社区将协助删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章