【发布时间】:2015-06-19 14:36:48
【问题描述】:
我发送 POST 请求
$.ajax({
type: "POST",
url: "/common/ajax/advert/",
data: data,
dataType: "json",
contentType: "application/json",
success: function(r){}
});
到控制器
@Controller
@RequestMapping(value = "/common/ajax/advert")
public class Controller {
@RequestMapping(value="/", method=RequestMethod.POST)
@ResponseBody
public Map<String,Object> adsSearch(@RequestBody Map<String,Object> data){
Map<String,Object> result = new HashMap<String,Object>();
List<Advert> ads = advSrv.getAds(data);
result.put("obj", ads);
return result;
}
并返回 404 错误,但在 spring 3.2 中这工作正常。
带有 RequestMethod.GET 的控制器在新旧版本中都能正常工作。
请帮我解决它。
UPD.1 我尝试使用 RequestMethod.POST 创建一个 @RestController 类(Spring 4.1) - 但它也没有工作。
UPD.2 在日志中 Spring 正确映射了此方法,但未处理 post 请求(与 get 请求不同,它们工作正常)。
【问题讨论】:
-
请在这里查看我的答案stackoverflow.com/questions/28675298/…我有同样的问题并用这种方式解决。
-
不幸的是,它没有帮助。 Post 请求仍然返回 404 错误
-
当您提供
Map<String,Object>时,Jackson 应该如何知道要映射到哪种对象类型? -
在 Spring 3.2 中 Jackson 与
@ResponseBody Map<String,Object>正常工作 -
@Stephen1832如果你得到 404 这意味着页面未找到,页面重定向或其他问题。您应该调试您的 ResponseBody 之前是可以的,然后添加 messageConvertor 并更新您的杰克逊库。
标签: java spring spring-mvc