Spring MVC 'forward' 不适用于相同 URI 的 @PostMapping 和 @GetMapping 注释
Spring MVC 'forward' not works with @PostMapping and @GetMapping Annotations for same URI
我已将 @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;
}
@GetMapping等只是适当的@RequestMapping的别名。所以你基本上有 2 @RequestMappings。在这种情况下,第二个将被忽略。在你的 after 块中,你做得正确并且在 single @RequestMapping.
中有多个映射
我已将 @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;
}
@GetMapping等只是适当的@RequestMapping的别名。所以你基本上有 2 @RequestMappings。在这种情况下,第二个将被忽略。在你的 after 块中,你做得正确并且在 single @RequestMapping.
中有多个映射