当前位置: 首页 > 知识库问答 >
问题:

在spring mvc3中同时使用@RequestBody和@RequestParam

韩寒
2023-03-14

我使用的是Spring-MVC3.1.0.版本,由于某种原因,将POST与查询params和请求body进行映射是不起作用的。

下面是我的控制器方法的外观:

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

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

谢了!

共有1个答案

江天宇
2023-03-14

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

第二,内容类从何而来??我用了一根绳子,对我来说很好

@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代码有更好的解决方案,请检查以下内容:Spring MVC中的多响应HTTP status

 类似资料:
  • 看起来在这个话题上有一些问题,但许多问题现在已经过时,或者问的是不同的问题。 例如,我想做 我不想在 我有一个方法签名,它同时接受请求参数和请求主体(它是Kotlin,但我不认为这实际上有什么不同)。 我可以很好地访问RequestParam,但是RequestBody包含的不仅仅是我在body中发送的JSON,它包含了body和请求参数的合并。在上面的示例中,它将为body绑定输出以下内容 有没

  • 我想使用curl在控制器中一起传递json和文件。我在控制器中有以下方法。 下面是curl命令 使用JSON的Spring MVC多部分请求 这就是客户机如何将数据Paasting到服务器

  • 问题内容: 结合使用HTTP开发客户端和发布请求和Content-Type应用程序/ x-www-form-urlencoded 1)仅@RequestBody 请求-本地主机:8080 / SpringMVC /欢迎进入正文-name = abc Code //如预期的那样将正文命名为“ name = abc” 2)仅@RequestParam 请求-本地主机:8080 / SpringMVC

  • 使用带有Post请求和Content-Type Application/x-www-form-urlencoded的HTTP dev客户端 URL:localhost:8080/springmvc/welcome 正文:name=abc URL:localhost:8080/springmvc/welcome 在body-name=abc中 URL:localhost:8080/springmvc

  • 我遇到了一种情况,在处理请求之前,我必须更新它。基本上,我必须用一个可以随时间变化的属性来更新请求。要求消费者随请求一起发送属性是不实际的..所以,我觉得唯一的办法就是..在处理请求之前,更新控制器方法中的请求.. 到目前为止,控制器方法中使用了HttpServletRequest。然后将请求读取为流,然后将其转换为json字符串进行处理。我正在考虑用@RequestBody替换它,并将请求读入p

  • 我尝试使用和通过Postman发送JSON和多个文件,但它不起作用。有可能在API中同时使用这两个注释吗?