Spring MVC'forward'不适用于同一URI的@PostMapping和@GetMapping注释

问题描述 投票:0回答:1

我已将@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;
}

我已将@PostMapping和@GetMapping用于/ login端点,如下所示,对于验证失败后的/ login页面,如果我转发到具有错误消息的同一/ login页面,则无法正常工作,并且...

java spring spring-mvc spring-annotations
1个回答
1
投票

@@ GetMapping等只是适当的@RequestMapping的别名。因此,您实际上有2个@RequestMappings。在这种情况下,第二个将被忽略。在您的after块中,您正在正确执行此操作,并且在single

@RequestMapping中具有多个映射。
© www.soinside.com 2019 - 2024. All rights reserved.