有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    这是由于Spring Boot 2.2.0中使用默认freemarker后缀进行了突破性的更改
    Freemarker文件现在应该以.ftlh而不是.ftl结尾
    .ftlh启用HTML自动转义功能

    可以在here中找到更改此属性的提交。它的目的是修复this issuefreemarker默认设置应该更安全的问题,即启用自动HTML转义

    升级前应该阅读的2.2.0.RELEASE的完整更改日志可以在here中找到