java Spring引导Freemarker从2.2.0升级失败
在将spring启动父级升级到2.2.0.RELEASE
时,我的基于freemarker的spring启动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).
错误stacktrace没有说太多。它只是说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这是一个自我回答的问题,以防止其他可怜的灵魂像我一样受苦李>
# 1 楼答案
这是由于Spring Boot 2.2.0中使用默认freemarker后缀进行了突破性的更改
Freemarker文件现在应该以
.ftlh
而不是.ftl
结尾.ftlh
启用HTML自动转义功能可以在here中找到更改此属性的提交。它的目的是修复this issuefreemarker默认设置应该更安全的问题,即启用自动HTML转义
升级前应该阅读的
2.2.0.RELEASE
的完整更改日志可以在here中找到