问题
最近在做毕业设计的时候,使用了thymeleaf模板引擎。因为自己前端不是特别6,引用了别人写的前端项目,然后自己修改,并加上引擎标签,然而会出现org.xml.sax.SAXParseException的异常。
起初,按照异常提示一步步弄,发现改的太多了,太费劲了,而且都是某些缺少结束标记的这种错误。这也不算是错误,只能说没有特备严格准守html5规范。thymeleaf模板引擎默认是Template modes:HTML5解析的,thymeleaf引擎对规范比较严格,若不符合规范,就会报错。
常见的有下面两种:
org.xml.sax.SAXParseException: 元素类型 "meta" 必须由匹配的结束标记 "</meta>" 终止
org.xml.sax.SAXParseException: 元素类型 "link" 必须由匹配的结束标记 "</link>" 终止
报错原因比较浅显直白,语法格式化错误。
解决方式:
可以根据项目情况做:
如果前端代码修改少的,严格遵守html页面的编写规范,根据要求修改,加上结束标签。
如果前端代码修改多的,节约时间和精力,可以尝试一下方式:
1.配置,在application.properties文件当中加入下面三行。
spring.thymeleaf.content-type=text/html
spring.thymeleaf.mode =LEGACYHTML5
spring.thymeleaf.cache=false
2.引入额外的maven依赖:
<!--允许不严格的html5格式出现-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
该依赖是告诉程序不进行严格的html5规范检查。
然后重新运行程序,就不会报错了。