Spring mvc Spring MVC控制器方法post和no post

Spring mvc Spring MVC控制器方法post和no post,spring-mvc,Spring Mvc,编辑:下面的代码确实有效。希望这仍然是一个有用的例子 有没有一种方法可以为同一个URL编写两个不同的控制器方法,一个处理普通请求,另一个处理post请求?像这样: @RequestMapping("/url") public String requestWithoutData() { return "view"; } @RequestMapping(value="/url", method=RequestMethod.POST) public String requestWithData(@

编辑:下面的代码确实有效。希望这仍然是一个有用的例子

有没有一种方法可以为同一个URL编写两个不同的控制器方法,一个处理普通请求,另一个处理post请求?像这样:

@RequestMapping("/url")
public String requestWithoutData() {
  return "view";
}
@RequestMapping(value="/url", method=RequestMethod.POST)
public String requestWithData(@ModelAttribute("foo") String foo) {
  System.out.println(foo);
  return "view";
}

当我运行类似于上面的代码时,它总是默认为requestWithoutData方法。如何让spring区分这两者?我知道我可以用一种方法处理if语句,但如果可能的话,这种方法看起来更好。提前谢谢

是的,您可以有两个具有相同url但不同RequestMethod的方法。在第一个方法中,您需要有method属性

@RequestMapping("/url",  method = RequestMethod.GET)
public String requestWithoutData() {
  return "view";
}
@RequestMapping(value="/url", method=RequestMethod.POST)
public String requestWithData(@ModelAttribute("foo") String foo) {
  System.out.println(foo);
  return "view";
}

我不明白。你是在发送POST请求还是其他类型的请求?在某些情况下,我会发送POST,在其他情况下,我会发送一个没有数据的简单url。我的页面上有一个表单和一个表,但最初用户只会看到表单。表单将向同一url发送post请求并填充表。因此,
requestWithData
将处理post,
requestWithData
将处理所有其他内容。结果表明,无论是否使用RequestMethod.GET标记,它都可以工作。这是我的错,我道歉。