今天使用对象形式接收参数的时候,不是提示400就是提示415,各种郁闷,之前自己也遇到过但是记不起来了。花了点时间,总算解决了,还是赶紧mark一下吧。
问题:
1 页面ajax请求提示400;
2 ajax提示415;
解决:
1 需要看你的对象是否有无参构造方法,如果没有的话,请求后台会提示400.
2 首先,springmvc这里接收的不是json对象,而是一个json的字符串,所以请求传的应该是通过JSON.stringify(data)处理过的数据。其次,要在你的ajax添加一个contentType: ‘application/json’,指明类型为json。最后,要在你接收参数的对象前添加一个@RequestBody的注解。
ok,这就应该可以了。另附上一段例子。
页面:
···
var data = {};
data.name = ‘我是专题’;
data.type = 3;
data.storyList = [{“id”:’471163085038686208’,”type”:44}]
$.ajax({
url : "/storylist/createStorylistSubjectNew.do",
type : "POST",
data : JSON.stringify(data), //直接用JSON对象
contentType: 'application/json',
success : function(result) {
console.log('测试。。。');
console.log(result);
}
});
···
后台:
···
@RequestMapping(value=”/createStorylistSubjectNew.do”,method = RequestMethod.POST)
@ResponseBody
public String createStorylistSubjectNew(@RequestBody StoryListInfo storyListInfo){
String result=null;
try{
result=storyListService.createStorylistSubjectNew(storyListInfo);
}catch(Exception ex){
ex.printStackTrace();
}
LOG.info(result);
return result;
}
···
补充:请求提示400,经过一段时间的使用发现,和接受对象是否有无参构造没有关系,抱歉误导大家了,特此纠正。真实原因和自己组装的参数有关,参数组装的不正确,导致springmvc解析时异常,最后提示400。我这里当时组装对象中的List时参数拼错了。