SpringMVC配置多個模板檢視解析器
阿新 • • 發佈:2019-01-30
之前在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>