一般情况下用了thymeleaf以后前台页面都会直接用html,蛋痛的我却希望做成html页面通过thymeleaf解析,jsp通过springMVC解析,于是乎有了这个例子。配置两个视图解析器,利用order属性先用thymeleaf,解析不了就换springMVC。实验发现光指着order并没有什么卵用,就自己写了个方法判断源文件是否存在,存在的话用thymeleaf,不在就找jsp去。感觉不是什么正统的方法,如果谁有好的方式就提出来我向您学习。
1.[代码]thymeleaf的视图解析器,注意order的位置
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
2.[代码]springMVC的视图解析器
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
value="org.springframework.web.servlet.view.JstlView" />
3.[代码]自己做的山寨判断源的方法,注意只发布war包的时候这破玩意儿不好使
package cn.agriculture.common.component;
import java.io.File;
import java.util.Locale;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.View;
import org.thymeleaf.spring4.view.ThymeleafViewResolver;
import org.thymeleaf.templateresolver.ServletContextTemplateResolver;
@Slf4j
public class ThymeleafViewResolverEx extends ThymeleafViewResolver {
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
ServletContextTemplateResolver servletContextTemplateResolver = (ServletContextTemplateResolver)this.getWebApplicationContext().getBean("templateResolver");
servletContextTemplateResolver.initialize();
String prefix = servletContextTemplateResolver.getPrefix().substring(1);
String suffix = servletContextTemplateResolver.getSuffix();
//String str = getClass().getResource("/").toString().replace("file:/", "").replace("/WEB-INF/classes/", "");
//log.info("*****************************" + str);
log.info("-----------------------------" + this.getServletContext().getRealPath("/"));
File file = new File(this.getServletContext().getRealPath("/") + prefix + viewName + suffix);
if (!file.exists()){
return null;
}
return super.resolveViewName(viewName, locale);
}
}