spring设置多个ViewResolve

      接了一个外包项目开发,有微信前端和后台管理二套界面,为了方便,把2个系统放在了一个工程里面,但是前端开发技术方有了分歧,最后决定后台用velocity,微信用jsp,那么就需要修改一下spring-mvc的配置。

1、重写InternalResourceView方法,主要为了高级别的解析器解析不到的时候,抛给低级别的解析器。 

package com.studio.core.access;

import java.io.File;
import java.util.Locale;

import org.springframework.web.servlet.view.InternalResourceView;

/**
 * 自定义视图解析(通过配置实现多视图整合,如jsp,velocity )
 * @author liuhy
 *
 */
public class JspResourceView extends InternalResourceView {  
    @Override  
    public boolean checkResource(Locale locale) {  
    	System.out.println(this.getServletContext().getRealPath("/") +"++"+ getUrl());
	     File file = new File(this.getServletContext().getRealPath("/") + getUrl());  
	     return file.exists();// 判断该页面是否存在  
    }  
}  

2、order级别设置解析器的优先级,先按jsp解析,解析不到文件,在vm解析。

<bean id="velocityViewResolver"
		class="com.supply.network.melody.common.web.velocity.resolver.FixedVelocityLayoutViewResolver">
		<property name="order" value="10" />
		<property name="suffix" value=".vm" />
		<property name="prefix" value="screen/" />
		<property name="layoutUrl" value="layout/default_layout.vm" />
		<property name="exposeSpringMacroHelpers" value="true" />
		<property name="dateToolAttribute" value="dateTool" />
		<property name="numberToolAttribute" value="numberTool" />
		<property name="toolboxConfigLocation" value="WEB-INF/classes/conf/vm-toolbox.xml" />
		<property name="contentType" value="${web.contentType}"></property>
		<property name="exposeRequestAttributes" value="true"></property>
	</bean>
	
	<bean id="jspViewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="viewClass" value="com.studio.core.access.JspResourceView"/>  
		<property name="contentType" value="${web.contentType}"></property>
		<property name="order" value="1" />
		<property name="prefix" value="/WEB-INF/views/front/" />
		<property name="suffix" value=".jsp" />
	</bean>

猜你喜欢

转载自5keit.iteye.com/blog/2340667