spring下使用多视图解析器解析
根据优先级选择先用html视图解析器解析,如果指定路径不存在html的模板,则换到jsp视图解析器
maven配置
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.2.RELEASE</version>
</dependency>
spring-mvc.xml
<!-- **************************************************************** -->
<!-- THYMELEAF-SPECIFIC ARTIFACTS -->
<!-- TemplateResolver <- TemplateEngine <- ViewResolver -->
<!-- **************************************************************** -->
<!-- thymeleaf的视图解析器 -->
<!-- Thymeleaf View Resolver - implementation of Spring's ViewResolver interface -->
<!--<bean id="viewResolver" class="org.thymeleaf.spring4.view.ThymeleafViewResolver">-->
<bean id="viewResolver" class="com.cn.web.util.HtmlResourceView">
<property name="templateEngine" ref="templateEngine"/>
<property name="characterEncoding" value="UTF-8"/>
<!--<property name="viewNames" value="html/*" />-->
<property name="order" value="0"/>
</bean>
<!-- 配置SpringMVC的视图解析器 -->
<!--<bean class="org.springframework.web.servlet.view.RedirectView .InternalResourceViewResolver">-->
<bean id="jspResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
<!--<property name="viewNames" value="jsp/*" />-->
<property name="order" value="1"/>
</bean>
<!-- Thymeleaf Template Engine (Spring4-specific version) -->
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine">
<property name="templateResolvers">
<set>
<ref bean="templateResolver"/>
</set>
</property>
</bean>
<!-- Thymeleaf Template Resolver -->
<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML"/>
</bean>
HtmlResourceView.java
import org.springframework.web.servlet.View;
import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import java.io.File;
import java.util.Locale;
/**
* Describe:
* User:tangjing
* Date:17/1/16
* Time:下午5:18
* 重写resolveViewName方法实现多视图的方法
*/
public class HtmlResourceView extends ThymeleafViewResolver {
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
SpringResourceTemplateResolver servletContextTemplateResolver = (SpringResourceTemplateResolver) this.getWebApplicationContext().getBean("templateResolver");
//servletContextTemplateResolver.initialize();
String prefix = servletContextTemplateResolver.getPrefix().substring(1);
String suffix = servletContextTemplateResolver.getSuffix();
File file = new File(this.getServletContext().getRealPath("/") + prefix + viewName + suffix);
if (!file.exists()) {
return null;
}
return super.resolveViewName(viewName, locale);
}
}