无法从 Spring Boot 方法返回 Freemarker 视图

问题描述 投票:0回答:2

目前,我正在做一个小项目,需要使用Spring Boot和FreeMarker模板引擎。我尝试了不同的方法,但仍然无法从 Spring Boot 返回 FreeMarker 视图。我的项目使用 Gradle 作为构建工具,里面的内容如下:

build.gradle:

plugins {
    id 'org.springframework.boot' version '2.3.3.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

sourceCompatibility = 11

repositories {
    mavenCentral()
}

sourceSets.main.resources.srcDirs = ["src/resources"]

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    compile("org.springframework.boot:spring-boot-starter-web")
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'org.springframework.boot:spring-boot-starter-freemarker'

}

这是我的方法,我希望使用列表重定向到 FreeMarker 视图,相反,当我向此 URL 发送 GET 请求时,我只会显示“

index
”字符串:

@GetMapping(path = "/code/latest")
public String getTop10LatestCode(@ModelAttribute("model") ModelMap model) {
    model.addAttribute("codes", codes.subList(Math.max(0, codes.size() - 10), Math.max(codes.size() - 1, 0)));
    return "index";
}

这是我的

application.properties
文件:

server.port=8889
management.endpoints.web.exposure.include=*
management.endpoint.shutdown.enabled=true

spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.suffix=.ftlh

我的 FreeMarker 视图已经位于

templates
文件夹内的
resources
文件夹下。

这是我的项目结构: enter image description here

任何帮助将不胜感激,谢谢。

java spring-boot freemarker
2个回答
3
投票

我已经想通了,我的类是用

@RestController
注解来注解的,它本身就是
@Controller
@ResponseBody
注解的组合,因为我类中的每个方法都会返回一个响应体,即使是那个我在这里发布的,这就是它返回正文的原因,因此返回
index
。我需要将我的
@RestController
更改为
@Controller
,问题就解决了。


0
投票

对我来说,下面的conf丢失了

spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.suffix=.ftlh

© www.soinside.com 2019 - 2024. All rights reserved.