1.如果接收的是普通的数据类型或者单对象
后端的方法上面什么也不需要处理,只需要将对象放入到参数上面就可以了
2.如果接收的是复杂类型
例如对象里面还包含对象或者是集合等,后端的方法参数上面只需要加上@RequestBody即可,但是还没有完,前端传递的时候需要加上contentType:application/json
好了,栗子来了:
实体类:
public class SignUpSave {
private Integer taskID;
private Integer skillID;
List<SignUpSave.Data> equipment = new ArrayList<SignUpSave.Data>();
/*...*/
public static class Data{
private Integer equipmentDetailID;
private Integer qty;
/*...*/
}
}
Controller的方法:
public SignUpResult SignUp(HttpServletRequest request,@RequestBody SignUpSave signUpSave) throws Exception{
/*...*/
return signUpResult;
}
前端发送的数据:
var test = {
"TaskID": "1",
"SkillID": "1",
"Equipment": [
{
"EquipmentDetailID": "1",
"Qty": "1"
}
]
};
$.ajax({ type: "POST", url:"...", contentType: "application/json", data: JSON.stringify(test), dataType: "json", success:function(res){ console.log(res) } })
测试结果看下面图片
总结
接收复杂类型的时候一定要加上contentType:application/json,要不然后端会报错,无法转换。