springboot使用thymeleaf模板引擎時出現org.xml.sax.SAXParseException的原因與解決辦法
阿新 • • 發佈:2019-02-19
異常描述:
在springboot程式當中,使用thymeleaf作為檢視的時候,跳轉到頁面上的時候,會出現org.xml.sax.SAXParseException的異常(SAX解析器解析xml檔案異常),常見的有下面兩種:
org.xml.sax.SAXParseException: 元素型別 "meta" 必須由匹配的結束標記 "</meta>" 終止
org.xml.sax.SAXParseException: 元素型別 "link" 必須由匹配的結束標記 "</link>" 終止
報錯原因非常的清晰易懂,我們在html頁面當中<meta>標籤或者<link>標籤沒有結束標誌,檢視我們的html檔案,會發現可能出現下面兩種情況:
<meta charset="UTF-8">
<link rel="stylesheet" href="css/3d.css">
確實是我們沒有加上結束標籤,但是我們一般情況下都可以這麼寫啊,為什麼到了這個程式裡面就會報錯呢?
原因如下:
thymeleaf模板引擎預設是Template modes:HTML5解析的,解析比較嚴格,對html的內容要求很嚴格,假如不符合規範,那麼就會報錯。
解決辦法:
1.嚴格遵守html頁面的編寫規範,該加結束標籤的時候就加結束標籤,嚴格要求自己。
2.偷點懶,告訴程式說別這麼嚴格嘛,換個更友好更親切的去解析,你這麼嚴格我都不會寫程式碼了。
第一步:配置,在application.properties檔案當中加入下面三行。
spring.thymeleaf.content-type=text/html
spring.thymeleaf.mode =LEGACYHTML5
spring.thymeleaf.cache=false
第二步:引入額外的maven依賴(LEGACYHTML5需要搭配一個額外的庫NekoHTML才可用)
<!--允許不嚴格的html5格式出現--> <dependency> <groupId>net.sourceforge.nekohtml</groupId> <artifactId>nekohtml</artifactId> <version>1.9.22</version> </dependency>
做了以上兩步之後,重啟你的程式吧,不會出現上述錯誤了。