SpringBoot采用嵌入式的Servlet容器,默认模板解析不支持JSP,须要额外配置,基本上都会初期都会选择SpringBoot推荐的Thymeleaf模板引擎来解析视图;html
在刚用Thymeleaf时,可是以为还行,跟JSP其实也差不了多少,可是本身实际操做起来的时候,仍是遇到了坑,被坑的好久的是Thymeleaf的页面布局路径是根据templates下的路径,而不是相对路径;html5
遇坑过程:java
在templates下,个人项目路径以下所示: maven
--templates布局
--crud(d)测试
--emp(d)spa
--commons(d)3d
--module.html(f)code
--list.html(f)htm
--add.html(f)
module.html里面是个人模板文件:
而后在emp文件下的list.html进行引入commons文件夹下module.html的公共片断(TMD还有提示,就认为是正确的,高兴不已):
结果项目一启动访问,后台就一直报500,错误以下:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [crud/emp/list], template might not exist or might not be accessible by any of the configured Template Resolvers at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] at org.thymeleaf.engine.TemplateManager.parseAndProcess(TemplateManager.java:607) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE]
上网查了好几种出现这种状况的解决方式:
1. 什么使用了@RestController,@ResponseBody(不会范这种错)
2. Thymeleaf要求HTML5规范,不能出现单标签(一顿解决单标签操做,仍是不行,结果thymeleaf3.0早就不要求严格的html5了)
3. 要引入thymeleaf-layout-dialect依赖(加了仍是没有用)
4. 有人建议清除maven仓库(没办法,把maven本地库删了,从新拉取依赖包,结果仍是不行)
十分奔溃,好想有一个厉害的高手,惋惜木有。。。
最后在阴差阳错的测试中,发现原来布局的分段路径要以tempaltes路径来引入是okay的,因而把commons整个文件夹放到了templates的目录下(但是在list.hmlt引入布局分段没有以前编写时有路径提示)
原本不报但愿的,都没有提示,结果能够访问,欲哭无泪呀,不过总算是解决了。。。