springboot - spring-boot-starter-thymeleaf對沒有結束符的HTML5標簽解析出錯
問題描述
例如下面的html5代碼,在解析的時候是會出錯的
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title></title></head><body><h1>Hello World</h1></body></html>
錯誤是沒有/這個結束符org.xml.sax.SAXParseException: 元素類型 'meta' 必須由匹配的結束標記 '</meta>' 終止。后來試著在配置里添加spring.thymeleaf.mode=LEGACYHTML5也不起作用
問題解答
回答1:需要注意的是,LEGACYHTML5需要搭配一個額外的庫NekoHTML才可用。到項目根目錄的build.gradle文件里這樣添加它到dependencies
具體內容如下:
非嚴格的thymeleaf格式
你可能會發現在默認配置下,thymeleaf對.html的內容要求很嚴格,比如<meta charset='UTF-8' />,如果少最后的標簽封閉符號/,就會報錯而轉到錯誤頁。也比如你在使用Vue.js這樣的庫,然后有<p v-cloak></p>這樣的html代碼,也會被thymeleaf認為不符合要求而拋出錯誤。
因此,建議增加下面這段:
spring.thymeleaf.mode = LEGACYHTML5spring.thymeleaf.mode的默認值是HTML5,其實是一個很嚴格的檢查,改為LEGACYHTML5可以得到一個可能更友好親切的格式要求。
需要注意的是,LEGACYHTML5需要搭配一個額外的庫NekoHTML才可用。到項目根目錄的build.gradle文件里這樣添加它到dependencies:
compile(’net.sourceforge.nekohtml:nekohtml:1.9.22’)然后運行一次Gradle刷新(有任何Gradle改動,都應該這樣運行一次):
Gradle刷新
最后重啟項目就可以感受到不那么嚴格的thymeleaf了。
參考
http://acgtofe.com/posts/2016...
回答2:難道要<meta charset='UTF-8'/>?
回答3:thymeleaf: cache: false mode: html
試試換成html
相關文章:
1. 百度地圖 - Android app中準備接入地圖sdk,百度VS高德哪個好一點?2. mongoDB批量插入文檔時,運行下面代碼,用MongoVUE查看數據庫,mongo庫中只存在一個文檔?不應該是20個嗎?3. 百度地圖api - Android百度地圖SDK,MapView上層按鈕可見卻不可觸,怎么解決?4. docker綁定了nginx端口 外部訪問不到5. html - sumlime text3代碼自動補全功能問題!6. javascript - 關于這組數據如何實現 按字母列表分類展示 不改動數據結構7. html5 - ajax post請求后如何渲染到頁面上8. css 選擇器 帶有 readonly 屬性 的<input> 怎么定位呢?9. javascript - html5的data屬性怎么指定一個function函數呢?10. css - 小程序canvas環形進度條
