我已将@PostMapping和@GetMapping用于/ login端点,如下所示,
对于/ login页面,验证失败后,如果我转发到同一/ login页面并显示错误消息,则该页面无法正常工作,并抛出405状态的方法不支持的错误。
当我先切换@PostMapping然后切换@GetMapping时,/ login页面本身未加载(请参阅“之前”部分)。
我已使用常规的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;
}
答案 0 :(得分:4)
@GetMapping等只是适当的@RequestMapping的别名。因此,您实际上有2个@RequestMappings。在这种情况下,第二个将被忽略。在您的after块中,您可以正确地进行操作,并且在单个 @RequestMapping中具有多个映射。