7

我正在使用 spring-mvc 3.1.0.RELEASE,由于某种原因,使用查询参数和请求正文映射 POST 不起作用。

这是我的控制器方法的外观:

  @RequestMapping(method = POST, value = "/post-to-me/") 
  public void handlePost(
    @RequestBody Content content,
    @RequestParam("param1") String param1,
    @RequestParam("param2") String param2
  ){
       //do stuff       
  }

但是,如果我将所有请求参数转换为路径参数,则映射工作。有没有人遇到过类似的事情?

谢谢!

编辑:“不起作用”== 404,当我尝试这样做时,POST /post-to-me?param1=x&param2=y

4

2 回答 2

1

首先,您的 POST url 与控制器方法 url 不匹配,您的 POST url 必须是 "/post-to-me/?param1=x¶m2=y" 而不是 "/post-to-me?param1=x¶m2=y"

其次,Content 类是从哪里来的??我使用了一个字符串,对我来说很好用

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me/")
public void handlePost(@RequestBody String content,
        @RequestParam("param1") String param1,
        @RequestParam("param2") String param2, HttpServletResponse response) {
    System.out.println(content);
    System.out.println(param1);
    System.out.println(param2);
    response.setStatus(HttpServletResponse.SC_OK);
}

请注意,我使用 HttpServletResponse 返回 HTTP 200 代码,但我认为返回 Http 代码有更好的解决方案,请查看:Multiple response http status in Spring MVC

于 2012-04-20T01:30:09.043 回答
1

请求映射值末尾的斜杠可能是问题所在。尝试:

@RequestMapping(method = RequestMethod.POST, value = "/post-to-me")

或将您的 POST 请求发送至POST /post-to-me/?param1=x&param2=y

于 2017-09-25T13:20:05.820 回答