SpringBoot整合thymeleaf 報(bào)錯(cuò)的解決方案
近日 在springboot項(xiàng)目中使用thymeleaf時(shí),莫名報(bào)了以下錯(cuò)誤:

在網(wǎng)上查找文章明白了報(bào)錯(cuò)的原因,這是由于如果使用thymeleaf 為模板,那么解析時(shí)就要求html必須為嚴(yán)格的html5格式,即必須有完整的結(jié)束標(biāo)記, 不然就會(huì)報(bào)錯(cuò)。
在html頁面中,諸如input,meta,link等標(biāo)簽 ,是可以不用閉合就可以被解析的(自閉合的),但是由于這里嚴(yán)格要求html5格式
于是解決辦法如下:
1) 在報(bào)錯(cuò)的標(biāo)簽上加入 結(jié)束標(biāo)簽。
2) 修改為不嚴(yán)格的模式。
在配置文件中加入如下配置:
mode: LEGACYHTML5

使用該配置,需要加入以下依賴:
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
3) 修改高版本的thymeleaf版本 。
低版本(即spring-boot-starter-parent的版本) SpringBoot 默認(rèn)使用的thymeleaf 版本為 2.1版本 ,該版本無法識(shí)別html5中常見的自閉合標(biāo)簽。官方原話,可以使用高版本thymeleaf,并通過配置來解決該問題。
可以在pom文件中強(qiáng)行指定thymeleaf的版本 ,如下:

<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version> <thymeleaf-layout-dialect.version>2.1.1</thymeleaf-layout-dialect.version>
然后再配置文件中配置如下:
thymeleaf:
mode: HTML
事實(shí)上,我在使用高版本的springBoot版本(2.0.4.RELEASE)時(shí),并沒有遇到這個(gè)情況 ,而該項(xiàng)目中使用的是1.5.9版本的springboot ,這也從側(cè)面證明該方法可行。
Springboot 集成 Thymeleaf 及常見錯(cuò)誤
Thymeleaf模板引擎是springboot中默認(rèn)配置,與freemarker相似,可以完全取代jsp,在springboot中,它的默認(rèn)路徑是src/main/resources/templates 靜態(tài)文件css, js 等文件默認(rèn)路徑是src/main/resources/static,所有項(xiàng)目中如果沒有這個(gè)目錄需要手動(dòng)加上了

首先我們要在pom.xml文件中添加依賴
<!-- thymeleaf 模板引用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
引用之后我們就來測試一下, 在pom.xml中引入依賴之后。你完全可以不用配置(也秉承了springboot 約定優(yōu)于配置)當(dāng)然你如果需要自定義一些屬性,你可以在application.properties 中添加配置。
測試類@Controller
/**
* @author pillarzhang
* @date 2019-06-03
*/
@Controller
public class loginController {
@RequestMapping("/index")
public String index(){
return "index";
}
}
Index,html 頁面如下
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body> <p style="color:red">hello world</p> </body> </html>
啟動(dòng)項(xiàng)目,輸入http://localhost:8081/index 即可看到如下頁面

這就成功的集成了Thymeleaf。
注意:前面也說了,如果你不配置任何屬性依然可以使用,當(dāng)然你也可以自己設(shè)置,在配置文件中application.properties 設(shè)置相應(yīng)的屬性
spring.thymeleaf.prefix=classpath:/templates/ 設(shè)置thymeleaf路徑默認(rèn)為src/main/resources/templates spring.thymeleaf.suffix=.html 設(shè)置thymeleaf模板后綴 spring.thymeleaf.content-type=text/html spring.thymeleaf.cache=false 是否開啟緩存默認(rèn)為true spring.thymeleaf.mode=LEGACYHTML5 設(shè)置thymeleaf嚴(yán)格校驗(yàn) spring.thymeleaf.encoding=UTF-8 設(shè)置編碼
1、配置完成之后一定要注意路徑地址是否正確,
2、一定要用@Controller,如果使用@RestController,有可能返回return中的一串字符

3、方法前不要加@ResponseBody,加這個(gè)注釋相當(dāng)于@RestController, 返回一串字符串同上
4、如果載application.properties重配置屬性,一定要注意是否書寫有誤,不能多空格否則有可能會(huì)報(bào)如下錯(cuò)誤:

至此,springboot集成thymeleaf 就完成了,雖然中間遇到了一些小問題,還好解決了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Springboot詳解如何整合使用Thymeleaf
- springboot+thymeleaf整合阿里云OOS對(duì)象存儲(chǔ)圖片的實(shí)現(xiàn)
- springboot整合shiro之thymeleaf使用shiro標(biāo)簽的方法
- SpringBoot使用thymeleaf實(shí)現(xiàn)一個(gè)前端表格方法詳解
- Springboot使用thymeleaf動(dòng)態(tài)模板實(shí)現(xiàn)刷新
- 淺析SpringBoot中使用thymeleaf找不到.HTML文件的原因
- springboot如何使用thymeleaf模板訪問html頁面
- springboot中thymeleaf模板使用詳解
- SpringBoot?整合Thymeleaf教程及使用方法
相關(guān)文章
SpringBoot實(shí)戰(zhàn)之實(shí)現(xiàn)結(jié)果的優(yōu)雅響應(yīng)案例詳解
這篇文章主要介紹了SpringBoot實(shí)戰(zhàn)之實(shí)現(xiàn)結(jié)果的優(yōu)雅響應(yīng)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
Java(TM) Platform SE binary 打開jar文件的操作
這篇文章主要介紹了Java(TM) Platform SE binary 打開jar文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
MyBatisPlus-QueryWrapper多條件查詢及修改方式
這篇文章主要介紹了MyBatisPlus-QueryWrapper多條件查詢及修改方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
SpringBoot+Email發(fā)送郵件的實(shí)現(xiàn)示例
Spring?Boot提供了簡單而強(qiáng)大的郵件發(fā)送功能,本文主要介紹了SpringBoot+Email發(fā)送郵件的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
圖解Java中插入排序算法的原理與實(shí)現(xiàn)
插入排序的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構(gòu)建有序序列,對(duì)于未排序數(shù)據(jù),在已排序序列中從后向前掃描,找到相應(yīng)位置并插入。本文將通過圖片詳解插入排序的原理及實(shí)現(xiàn),需要的可以參考一下2022-08-08
Java+MySQL實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)源碼
這篇文章主要為大家詳細(xì)介紹了Java+MySQL實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11

