如果,你选择了Spring Boot + Thymeleaf 这对组合。恭喜你,你进入了一个大坑!不,不能称之坑,就是万丈深渊。
新增、编辑、修改、保存同一个页面,有参数时正常访问,没参数报个错给你看看,Thymeleaf的傲娇真不是盖的!
先上错误代码,这是前端报错的:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Thu Nov 29 22:27:35 CST 2018
There was an unexpected error (type=Internal Server Error, status=500).
An error happened during template parsing (template: "class path resource [templates/personnelClassification/edit.html]")
这是IDEA控制台抛出的:
[THYMELEAF][http-nio-8080-exec-5] Exception processing template "personnelClassification/edit": An error happened during template parsing (template: "class path resource [templates/personnelClassification/edit.html]")
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/personnelClassification/edit.html]")
当你在网上穷搜到抓狂的时候,一般给出的答案是:
1、配置文件缺少;
2、Application文件没有放在最顶级目录上;
3、@RequestMapping路径不对导致找不到;
但是,我看了自己的项目所有的都是正常的,重新检查检查了前端页面,发现th:value="${bean.personnelClassificationId}",通过Thymeleaf标签赋值时,编辑时有参数时是正常的,新增时没参数就会报错。所以,我感觉这和参数的有无有直接关系。
继续搜索,发现真有一部分发现这个问题,有先驱者给出了解决办法:th:value="${bean?.personnelClassificationId}",在传入参数后面加上一个英文问号,形成类似于三目运算,如果bean不为空,则进行取值。当参数取值层级较多时,也可以是result?.bean?.id这种。
项目添加问号后,如果报错也不用担心,保持Thymeleaf为最新版本就行了。我目前使用的是:<version>2.1.0.RELEASE</version>版本,更多新版本可以在mvnrepository.com内搜索。
网友评论