Spring MVC 'forward' не работает с аннотациями @PostMapping и @GetMapping для одного и того же URI - PullRequest
0 голосов
/ 17 апреля 2020

Я использовал @PostMapping и @GetMapping для конечной точки / login, как показано ниже,

Для страницы / login после сбоя проверки, если я перехожу на ту же страницу / страницу входа с сообщениями об ошибках, она не работает и выбрасывает метод не поддерживается ошибка с состоянием 405.

Когда я сначала переключаю @PostMapping, а затем @GetMapping, сама страница входа / не загружается (см. раздел «До»).

Я исправил это с обычными параметрами RequestMapping (прямой и обычный вход в систему), но хотел больше узнать о внутренних механизмах этих аннотаций, как это работает.

До:

@GetMapping(value = "/login")
@PostMapping(value = "/login")
public ModelAndView getLoginPage() {
    ModelAndView modelAndView = new ModelAndView(LOGIN_VIEW);
    return modelAndView;
}

После:

@RequestMapping(value = "/login", method = { GET, POST })
public ModelAndView getLoginPage() {
    ModelAndView modelAndView = new ModelAndView(LOGIN_VIEW);
    return modelAndView;
}

1 Ответ

4 голосов
/ 17 апреля 2020

@ GetMapping, et c. это просто псевдоним для соответствующего @RequestMapping. Таким образом, у вас есть 2 @RequestMappings. В этом случае второй игнорируется. В вашем блоке after вы делаете это правильно и имеете несколько сопоставлений в single @ RequestMapping.

...