#java #spring #spring-boot #thymeleaf
#java #spring #весенняя загрузка #thymeleaf
Вопрос:
Я добавил Thymeleaf в свой проект Spring Boot.
Я создал HTML-файл в /resources/templates/index.html
Я добавил метод в свой @RestController:
@RequestMapping("/")
public String index(Model model, OAuth2Authentication authentication) {
// irreveland code here
return "index";
}
Кажется, что этот метод вроде как работает, но вместо перенаправления меня на http://localhost:8080/templates/index.html
у меня есть белая страница со словом «index» на ней (в источниках нет html, только слово index)
Я попытался поместить index.html страница в /resources/static и /resources для целей тестирования — никаких усилий.
Что здесь может пойти не так?
Ответ №1:
Вы пометили свой контроллер с помощью @RestController
, что означает, что все возвращаемые значения обрабатываются как тела ответов ( @ResponseBody
). Это означает, что ваша строка "index"
обрабатывается как таковая, а не как представление.
Чтобы использовать подход MVC, где "index"
ссылается на вызываемое представление index.html
, вы должны использовать @Controller
аннотацию.
Комментарии:
1. Это оно… Я тестировал свой API, используя RestController, чтобы поиграть с postman, и я забыл его изменить. С аннотацией контроллера это работает как шарм
2. В приведенной выше ситуации вы увидите только слово «index», напечатанное в браузере, поскольку
@RestContoller
это комбинация@Controller
и@ResponseBody
. Это просто возвращает объект и объектные данные, которые напрямую записываются в HTTP-ответ в виде текста. В вашем случае вы, вероятно, создаете карту, а затем указываете, какой вид использовать для отображения результатов. Для этого потребуется@Controller
аннотация. Для получения дополнительной информации, пожалуйста, прочитайте < javarevisited.blogspot.com/2017/08 /… .>