本文介紹了Spring Boot Freemarker從2.2.0升級失敗的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
將Spring-Boot-Parent升級到2.2.0.RELEASE
時,我的基于Freemarker的Spring Boot Web應用程序無法正確處理請求。
我有一個@Controller
為/hello
提供服務的src/main/resources/templates/hello.ftl
。
@Controller
class HelloController() {
@RequestMapping(value = ["/hello"])
fun hello(): String {
return "hello"
}
}
根據請求,它只會出現錯誤頁面,上面寫著There was an unexpected error (type=Not Found, status=404).
。
錯誤堆棧跟蹤不能說明什么。它只寫著org.springframework.web.servlet.resource.ResourceHttpRequestHandler: Resource not found
。
我的pom.xml
基本情況如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
在升級到Spring Boot 2.2.0版本之前,它一直運行得很好。
這里有什么問題?
根據rules,這是一個自我回答的問題,以防止其他可憐的人像我一樣受苦。
推薦答案
這是由于Spring Boot 2.2.0中使用默認免費標記后綴的突破性更改。
Freemarker文件現在應該以.ftlh
而不是.ftl
結尾。
.ftlh
啟用HTML自動轉義功能。
here可以找到更改了這一點的提交。它的目的是修復this issueFreemarker的默認設置應該更安全,這就是啟用自動的HTML轉義。
您應該在升級前閱讀的2.2.0.RELEASE
的完整更改日志here。
這篇關于Spring Boot Freemarker從2.2.0升級失敗的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,