springboot - spring-boot-starter-thymeleaf對(duì)沒(méi)有結(jié)束符的HTML5標(biāo)簽解析出錯(cuò)
問(wèn)題描述
例如下面的html5代碼,在解析的時(shí)候是會(huì)出錯(cuò)的
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title></title></head><body><h1>Hello World</h1></body></html>
錯(cuò)誤是沒(méi)有/這個(gè)結(jié)束符org.xml.sax.SAXParseException: 元素類(lèi)型 'meta' 必須由匹配的結(jié)束標(biāo)記 '</meta>' 終止。后來(lái)試著在配置里添加spring.thymeleaf.mode=LEGACYHTML5也不起作用
問(wèn)題解答
回答1:需要注意的是,LEGACYHTML5需要搭配一個(gè)額外的庫(kù)NekoHTML才可用。到項(xiàng)目根目錄的build.gradle文件里這樣添加它到dependencies
具體內(nèi)容如下:
非嚴(yán)格的thymeleaf格式
你可能會(huì)發(fā)現(xiàn)在默認(rèn)配置下,thymeleaf對(duì).html的內(nèi)容要求很?chē)?yán)格,比如<meta charset='UTF-8' />,如果少最后的標(biāo)簽封閉符號(hào)/,就會(huì)報(bào)錯(cuò)而轉(zhuǎn)到錯(cuò)誤頁(yè)。也比如你在使用Vue.js這樣的庫(kù),然后有<p v-cloak></p>這樣的html代碼,也會(huì)被thymeleaf認(rèn)為不符合要求而拋出錯(cuò)誤。
因此,建議增加下面這段:
spring.thymeleaf.mode = LEGACYHTML5spring.thymeleaf.mode的默認(rèn)值是HTML5,其實(shí)是一個(gè)很?chē)?yán)格的檢查,改為L(zhǎng)EGACYHTML5可以得到一個(gè)可能更友好親切的格式要求。
需要注意的是,LEGACYHTML5需要搭配一個(gè)額外的庫(kù)NekoHTML才可用。到項(xiàng)目根目錄的build.gradle文件里這樣添加它到dependencies:
compile(’net.sourceforge.nekohtml:nekohtml:1.9.22’)然后運(yùn)行一次Gradle刷新(有任何Gradle改動(dòng),都應(yīng)該這樣運(yùn)行一次):
Gradle刷新
最后重啟項(xiàng)目就可以感受到不那么嚴(yán)格的thymeleaf了。
參考
http://acgtofe.com/posts/2016...
回答2:難道要<meta charset='UTF-8'/>?
回答3:thymeleaf: cache: false mode: html
試試換成html
相關(guān)文章:
1. 點(diǎn)擊頁(yè)面就自動(dòng)輸入到mysql.求解2. java - 多叉樹(shù)求值,程序高手,算法高手看過(guò)來(lái)3. node.js - nodejs使用formidable上傳文件問(wèn)題4. java如何生成token?5. java - IDEA從SVN檢出項(xiàng)目 并在tomcat上運(yùn)行 求詳細(xì)流程6. linux - 新手-----nginx怎么配置請(qǐng)求轉(zhuǎn)發(fā)?7. node.js - 帶有node_modules目錄的項(xiàng)目,用phpstorm打開(kāi)速度極慢,怎么解決?8. ubuntu為什么這個(gè)文件夾里面的文件都被鎖上了?9. javascript - windos下第一次用Django無(wú)法正確創(chuàng)建工程目錄10. JAX-RS,GlassFish,Eclipse。簡(jiǎn)單的Web服務(wù)不起作用
