Перенаправление не работает с Thymeleaf в приложении Spring Boot - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь создать простое приложение в Spring Boot: Controller:

 @Controller
 public class RootController {

    @RequestMapping ("/")
    public String root() {
         return "login";
    }

    @RequestMapping(path = "/joinChart", method = RequestMethod.GET)
    public String joinChart(@RequestParam (defaultValue = "") String username) {
          return "redirect:chat?username=" + username;
    }
 }

root - метод работает хорошо. Но когда я пытаюсь перенаправить на страницу входа, возвращается 404-ОШИБКА.

project

1 Ответ

1 голос
/ 08 апреля 2020

Когда вы делаете

return "login";

в вашем root() методе-обработчике, вы на самом деле просто возвращаете имя представления (как правило, обрабатывается JstlView, но здесь обрабатывается ThymeleafView, поскольку вы используете Thymeleaf), но веб-инфраструктура Spring MVC (с вашим веб-контейнером Servlet) будет пытаться найти и визуализировать.

Когда вы делаете

return "redirect:chat?username=" + username;

в своем методе обработчика joinChart, вы фактически возвращаете перенаправление имя представления , которое сервер будет отображаться как ответ 303 с заголовком Location. Клиент будет проинструктирован отправить новый запрос на /chat. Если у вас нет сопоставления запроса для этого, очевидно, что сервер вернет 404.

Вам необходимо добавить сопоставление запроса для /chat

@RequestMapping ("/chat")
public String chat() {
     return "chat";
}
...