網上查看了各種解決的思路,總結如下:
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 添加以下依賴
- <dependency>
- <groupId>net.sourceforge.nekohtml</groupId>
- <artifactId>nekohtml</artifactId>
- <version>1.9.22</version>
- </dependency>
4. 資源文件的路徑被修改,如果你其他的請求都正常返回則可忽略這條。
解決:在pom.xml文件的<build></build>中加入
- <resource>
- <directory>src/main/resources</directory>
- </resource>
而本人的就厲害了,很好的避開了上述四種情形,而且開發環境就是正常的,一發到服務器上訪問就報錯,講過了埋頭幾個小時的檢錯,終於發現在本人調用模板的時候出了一個錯誤,如下,修改前:
看見了沒,index.html與layout文件夾是處於同一級目錄的,我多寫了一個"/",然而在本地是可以訪問的,但是一發到服務器上就會報錯,所以修改後:
就可以正常發佈了,牢記牢記!!!!!