Velocity学习(四)SpringMVC配置多个ViewResolver

Velocity学习(三)中讨论了一下在SpringMVC环境中使用Velocity模板引擎的配置。在实际开发中除了使用HTML之外可能也会使用其他视图如JSP,除了Velocity模板也许会用到FreeMark模板。SpringMVC通过配置多个视图解析器ViewResolver解决上述问题。

在SpringMVC配置JSP视图解析器和Velocity视图解析器

<bean id="jspViewResolver" 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"/>
	    <property name="order" value="1" />
	</bean>
	
	<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">  
	    <property name="resourceLoaderPath" value="/WEB-INF/vm" />  
	    <property name="configLocation" value="classpath:properties/velocity.properties"/>
	</bean> 
	
	 
	<bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
	    <property name="prefix" value="/WEB-INF/vm/"/>
	    <property name="suffix" value=".html"/>
	    <!--解决中文乱码-->
	    <property name="contentType" value="text/html;charset=UTF-8" />
	    <!-- 配置 velocity工具类  -->
	    <property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/>
	    <!-- Spring4 支持  velocity-tools2.0 -->
	    <property name="viewClass" value="org.lian.util.VelocityToolbox2View"/>
	    <!-- 开放request属性 -->
	    <property name="exposeRequestAttributes" value="true"/>   
	    <property name="requestContextAttribute" value="rc"/>
	    <property name="order" value="0" />
	</bean>
	

 通过一个“order”属性来设置视图解析器使用的优先级,数值越小优先级越高。使用优先级配置有一个很重要的问题需要注意:InternalResourceViewResolver 解析器的优先级要设置在视图解析器链的最低(具体原因请参考其他博文或者查看源码)这里VelocityViewResolver使用优先级要高于InternalResourceViewResolver 

在这种情况下JSP模板和Velocity模板可以正常解析,如果调换一下优先级那么JSP模板可以正常解析,而Velocity模板无法解析。

猜你喜欢

转载自blog-chen-lian.iteye.com/blog/2380923