Spring Boot启动后访问首页,发现游览器报错,如图:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Jan 23 17:03:31 CST 2019
There was an unexpected error (type=Internal Server Error, status=500).
Exception parsing document: template="login", line 6 - column 3
还好不是404错误,这种一看就是语法错误。从前台提示来看只知道是login.html这个页面报错,第六行第三列是head标签这里没问题啊。
既然是500服务器内部错误,我们就看下后台有没有错误日志打印,看下控制台
org.xml.sax.SAXParseException: 元素类型 "meta" 必须由匹配的结束标记 "</meta>" 终止。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) ~[na:1.8.0_181]
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) ~[na:1.8.0_181]
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) [na:1.8.0_181]
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) [na:1.8.0_181]
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472) [na:1.8.0_181]
果然,使用meta标签的只有第4行。原来我使用的Spring Boot是1.5.19版本,thymeleaf版本较低,该版本默认使用html5的语法标准,校验比较严格,每个标签必须有对应的结束标签,第四行改为<meta charset="UTF-8"/>,重启,OK。
另外,可以通过提高thymeleaf版本即可兼容html5之前的版本。
具体方法:在pom.xml中添加如下配置
<properties>
<thymeleaf.version>3.0.2.RELEASE</thymeleaf.version>
<thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
</properties>
重启后问题同样得到解决。