#java #spring-boot #freemarker
#java #spring-boot #freemarker
Вопрос:
В настоящее время я делаю небольшой проект, в котором мне нужно использовать Spring Boot и механизм шаблонов FreeMarker. Я пробовал разные способы, но я все еще не могу вернуть представление FreeMarker из Spring Boot. Мой проект использует 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 со списком, вместо этого, когда я отправляю запрос GET на этот URL, я просто получаю 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
папки.
Вот моя структура проекта:
Любая помощь будет высоко оценена, спасибо.
Ответ №1:
Я понял это, мой класс аннотируется @RestController
аннотацией, которая сама по себе является комбинацией @Controller
@ResponseBody
аннотаций и , потому что каждый метод в моем классе будет возвращать тело ответа, даже тот, который я разместил здесь, вот почему он возвращает тело, следовательно, возвращает index
. Мне нужно изменить свой @RestController
на @Controller
, и проблема решена.