在整合SpringBoot 和Tymeleaf 模板引擎时遇到知名错误
先来看错误
:
ERROR 12788 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
[Request processing failed; nested exception is
org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "
来看错误:
项目正常启动后, 调用Controller , 传入Model 对象, 添加设置 addAttribute() 域后, 在 Thymeleaf 里面使用标签来进行解析就会产生致命错误: Could not parse XXXX
, 然后控制台和网页都会打印错误: 提示 ${变量名称}
无法被解析, 如果不在标签库里面使用解析, 是不会出现这种错误的
来看解决过程:
小编遇到此错误后, 显示进行了个人配置检查, 包括依赖, HTML 页面引入依赖, Contoller 的代码等, 发现代码无问题, , 直接将问题进行百度, ---->结果无果
,
然后重新进行新建项目, 还是同样的错误, 一系列操作没有结果后, 选择直接看SpringBoot 下面的日志信息
发现了2个警告
警告说: 模板引擎Thymeleaf 不支持在 HTML5 里面使用Model
, 这不是说模板引擎或HTML5不支持 Model ,
问题原因:
究其原因, 是因为, SpringBoot 的的版本仲裁机制,. 默认对Thymeleaf 的版本控制, 和SpringBoot 对HTML 的版本控制不对应, 默认的模板引擎版本不支持 在HTML5 中使用Model , 然而SpringBoot 默认使用的是HTML5 页面, 这也许是SpringBoot 的一个失误之处, 将2个冲突的版本设置为默认支持了,
解决方法:
将SpringBoot 的默认HTML 版本从HTML5 改为 HTML
但是这样不符合生产环境: 我们需要的是HTML 5 ,
还有办法是将 Thymeleaf 的版本进行自我控制, 自定义到能在HTML5 中支持Model 的版本
完美解决问题: 开心的运行吧!