我正在使用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¶m2=y
答案 0 :(得分:1)
首先,你的POST网址与控制器方法网址不匹配,你的网址必须是“/ post-to-me /?param1 = x& param2 = y”not“/ post-to-me?param1 = X&安培; param2的= 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
答案 1 :(得分:1)
请求映射值末尾的斜杠可能是问题所在。 尝试:
@RequestMapping(method = RequestMethod.POST, value = "/post-to-me")
或将您的POST请求发送至POST /post-to-me/?param1=x¶m2=y