1. 程式人生 > >SpringBoot學習------SpringBoot使用Thymeleaf模組訪問不了靜態頁面

SpringBoot學習------SpringBoot使用Thymeleaf模組訪問不了靜態頁面

 

 

 

SpringBoot使用Thymeleaf模組訪問不了靜態頁面

    最近學習SpringBoot的過程中使用了Thymeleaf模組引擎,頁面傳送請求後老是無法顯示靜態頁面,所有的步驟都是參考資料來執行,自我檢查好久都沒有找到問題的答案,哎呦,我這暴脾氣就上來了,一個小頁面就想難倒我?那我還怎麼找到ONE PIECE?

    下面就給大家分享一下我悲慘的心路歷程:

  要使用Thymeleaf模組引擎,我們首先在pom檔案中引入相關依賴如下:

    

    這邊我們不需要指定版本,因為SpringBoot預設會使用spring-boot-starter-parent給我們進行專案依賴版本的管理,這裡我參考手冊,指定了Thymeleaf模組引擎的版本3.0,這裡我們注意一下,我自定義Thymeleaf版本同時也指定了thymeleaf-layout-dialect的版本,當使用Thymeleaf3作為主程式時,我們的thymeleaf-layout-dialect佈局功能的版本要是2以上,當使用Thymeleaf2作為主程式時,我們的thymeleaf-layout-dialect佈局功能的版本要是1以上。至於具體原因,我們可以在GitHub上檢視thymeleaf-layout-dialect可以看到:

    Thymeleaf-layout-dialect佈局功能版本2以上的版本才是重寫了來支援Thymeleaf 3的。

    如何使用,我參考了官方使用文件:

    自己定義了Thymeleaf模組引擎的版本3。

    接下來我寫了一個簡單的controller來驗證一下是否使用成功:

 

     這時意外出現了:

 

   

       原來是我寫的RequestMapping中指定的路徑和返回的檢視名衝突了,修改一下檢視名或者路徑就可以了,這個也不是什麼高深的問題,只不過新手的話,比較容易疏忽,這一塊還是要避免的。修改後我們看下結果,果然,福無雙至,禍不單行,執行後結果如下:

        黑人問號???

        出現No message available這種問題,一般這種情況,可能是URL錯誤或者啟動類沒有掃描到,檢查一下路徑和啟動類,沒毛病,我還在controller裡面加上了在控制檯列印的話,執行後也是能接受到請求的,但是就是返回不了頁面的內容,一切都是這麼合理,能想到的就是版本問題了,果然,網上也有人指出來是版本相容問題,廢話不多說,改版本:

        我把Thymeleaf的版本號改成最新的3.0.11,執行後,果然奏效:

        不過問題雖然解決了,但是這個版本號是從官方手冊上看到了,於是倔強的我把Thymeleaf 3.0.2~3.0.11所有的版本都試了一遍(是個狼人??),最後發現,3.0.2~3.0.7,專案啟動正常,但是無法返回頁面,3.0.8~3.0.9,專案啟動時會報出一些提示資訊:

 

 

         3.0.10~3.0.11,專案正常啟動,且可以返回頁面資訊。

         最後找了一下官網的手冊,發現只有1.5.22版本的SpringBoot有使用版本的推薦(可惜使用下來發現不能用),2.1.7版本的手冊上並沒有寫,不過查看了一下2.1.7版本的spring-boot-starter-parent,發現SpringBoot中預設使用的Thymeleaf版本和佈局功能的版本都挺新的,我們使用過程中可以不用自己制定版本,用預設的就行了:

        

        以上就是我解決這個問題的過程,大概原因就是版本相容問題,我們可以使用SpringBoot預設的版本配置,或者使用我如上嘗試成功地配置版本,至於深層次原因,暫時還沒有找到比較權威的資料來證明,如果有哪位巨佬瞭解,還望不吝賜教。

 

 

       &n