Java 从3.2迁移到4.1后,Spring MVC中的POST请求不起作用
我发出邮寄请求Java 从3.2迁移到4.1后,Spring MVC中的POST请求不起作用,java,spring,spring-mvc,Java,Spring,Spring Mvc,我发出邮寄请求 $.ajax({ type: "POST", url: "/common/ajax/advert/", data: data, dataType: "json", contentType: "application/json", success: function(r){} }); 到控制器 @Controll
$.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;
}
@控制器
@请求映射(value=“/common/ajax/advert”)
公共类控制器{
@RequestMapping(value=“/”,method=RequestMethod.POST)
@应答器
公共地图搜索(@RequestBody地图数据){
映射结果=新的HashMap();
列表ads=advSrv.getAds(数据);
结果.投入(“obj”,ads);
返回结果;
}
并返回404错误,但在Spring3.2中,此工作正常
具有RequestMethod.GET的控制器在旧版本和新版本中工作正常
请帮我修一下
我试图用RequestMethod.POST创建一个@RestController类(Spring4.1),但它也不起作用
log Spring中的UPD.2正确映射了此方法,但未处理post请求(与get请求不同,它们工作正常)。最后我发现了一个问题-升级到4.0后是Spring安全,默认情况下启用了csrf保护:
DEBUG: org.springframework.security.web.csrf.CsrfFilter - Invalid CSRF token found for post-request
我添加了支持csrf保护,所有功能都正常工作。请在这里检查我的答案,我有相同的问题,并用这种方法解决。不幸的是,它没有帮助。Post请求仍然返回404错误当您提供
映射时,Jackson应该如何知道映射到哪个对象类型?在Spring 3.2中,Jackson可以使用@Re正常工作sponseBody Map
@Stephen1832如果您得到404,则表示找不到页面,页面重定向或其他方面存在问题。您应该调试您的ResponseBody是否为空(之前可以),然后添加messageConvertor并续订jackson库。