SpringBoot+Thyemleaf開發環境正常,打包jar發到服務器就報錯Template might not exist or might not be accessible

網上查看了各種解決的思路,總結如下:

1. 在controller層請求處理完了返回時,沒有使用@RestController或@ResponseBody而返回了非json格式

這種情況下返回的數據thymeleaf模板無法解析,直接報錯,本人正式因爲這個原因才報錯。

解決方案:可以將@Controller換成@RestController,不過需要注意有沒有其他的方法返回了html頁面,會導致返回的不是頁面而是字符串;最好的方法就是在你所請求的方法上面加一個@ResponseBody即可。

2. 在你的controller層對應的方法返回html路徑及名稱時,在前面多加了一個/ 。

例如return "/index",正式這個/導致報錯的,解決:去掉返回前面的/即可,例如return "/index" 。

3. 在使用springboot的過程中,如果使用thymeleaf作爲模板文件,則要求HTML格式必須爲嚴格的html5格式,必須有結束標籤,否則會報錯。

解決方案:1.在application配置文件中配置

#thymeleaf
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.content-type=text/html
spring.thymeleaf.cache=false

再在pom.xml 添加以下依賴

  1. <dependency>
  2. <groupId>net.sourceforge.nekohtml</groupId>
  3. <artifactId>nekohtml</artifactId>
  4. <version>1.9.22</version>
  5. </dependency>

4. 資源文件的路徑被修改,如果你其他的請求都正常返回則可忽略這條。

解決:在pom.xml文件的<build></build>中加入

  1. <resource>
  2. <directory>src/main/resources</directory>
  3. </resource>

而本人的就厲害了,很好的避開了上述四種情形,而且開發環境就是正常的,一發到服務器上訪問就報錯,講過了埋頭幾個小時的檢錯,終於發現在本人調用模板的時候出了一個錯誤,如下,修改前:


看見了沒,index.html與layout文件夾是處於同一級目錄的,我多寫了一個"/",然而在本地是可以訪問的,但是一發到服務器上就會報錯,所以修改後:


就可以正常發佈了,牢記牢記!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章