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

标签 java spring spring-mvc spring-annotations

我已将 @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 block 中,您做得正确,并且在 单个 @RequestMapping 中有多个映射。

关于java - Spring MVC 'forward' 不适用于同一 URI 的 @PostMapping 和 @GetMapping 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61262424/

相关文章:

Java旋转问题

java - Java远程连接MySQL数据库

java - 有人可以向我解释这段使用移位将两个变量相乘的代码吗?

java - Spring MVC MappingJackson2JsonView 集合元素重复

javascript - JQuery 如何知道何时收到新消息?

java - 将 POJO 作为值的 HashMap 转换为 JSON 字符串

java - 如何在 Hibernate 中更新实体列表

java - 出错时再次调用并在 webflux 中重试

java - 配置 Springboot 以使用 2 个不同的数据库

java - Spring MVC CrudRepository findByIn