1、bug产生背景
SSM整合ThymeLeaf时,直接访问html页面,ThymeLeaf效果全部失效。
2、原因记录
ThymeLeaf无法直接在HTML页面中生效(浏览器不识别),需要通过模板引擎解析才能被识别处理。
3、解决方法
要在controller中去定义ThymeLeaf页面的访问路径,然后配置解析器解析,浏览器访问路径后,解析器会对页面进行解析,这样ThymeLeaf就生效了。
需要在SpringMvcConfig配置文件中添加Thymeleaf视图解析器
public class SpringMvcConfig implements WebMvcConfigurer {
//开启视图解析器
@Bean
public SpringResourceTemplateResolver springResourceTemplateResolver() {
SpringResourceTemplateResolver srtr = new SpringResourceTemplateResolver();
//设置页面的前后缀
srtr.setPrefix("/pages/");
srtr.setSuffix(".html");
//解决页面的中文乱码
srtr.setCharacterEncoding("UTF-8");
srtr.setOrder(1);
srtr.setTemplateMode("HTML5");
srtr.setCacheable(false);
return srtr;
}
//设置模板引擎
@Bean
public SpringTemplateEngine springTemplateEngine(SpringResourceTemplateResolver springResourceTemplateResolver, SpringSecurityDialect springSecurityDialect) {
SpringTemplateEngine ste = new SpringTemplateEngine();
ste.setTemplateResolver(springResourceTemplateResolver);
Set set = new HashSet();
set.add(springSecurityDialect);
ste.setAdditionalDialects(set);
return ste;
}
//配置thymeleaf视图解析器
@Bean
public ThymeleafViewResolver thymeleafViewResolver(SpringTemplateEngine springTemplateEngine) {
ThymeleafViewResolver tvr = new ThymeleafViewResolver();
tvr.setTemplateEngine(springTemplateEngine);
tvr.setCharacterEncoding("UTF-8");
return tvr;
}
}