①需要接收一个实体类Page,一个实体类User,@ModelAttribute注解自动装配
url: /你的后端映射路径,
data:{
pageNo: 1,
pageSize: 5,
userName:'fang',
userPwd:'kunsen'
},
dataType: 'json'
②需要接收一个实体类Page,一个实体类User,@requestBody注解类名装配
url: /你的后端映射路径,
data:{
Page:{ pageNo: 1,
pageSize: 5
},
User:{
userName:'fang',
userPwd:'kunsen'
}
},
dataType: 'json'
③需要接收一个实体类,不采用注解: 前端手动封装实体类,但是要清除自动传值的变量,一旦有一个不一样,直接接收不到。
先展示错误的:
url: /你的后端映射路径,
data:{
User:{
userName:'fang',
userPwd:'kunsen'
},
id:1
},
dataType: 'json'
再看正确的:
url: /你的后端映射路径,
data:{
User:{
userName:'fang',
userPwd:'kunsen'
}
},
dataType: 'json'
也许会觉得没有什么好说的,但是因为我用的是angular的js框架,也有其他人用其他框架,我在写数据域data的时候采用的是function返回值的方式传输,而我又需要用到angular自带的参数e:
url: '/web/admin/asynJob/findAsynTaskLog',
data: function (e) {
var temp = {
page: {
pageNo: e.page,
pageSize: e.pageSize
},
queryParam: {
groupType: 'exportUnitGroupName',
startDate: '',
endDate:'',
status: -1
}
};
///
delete e.page;
delete e.pageSize;
delete e.skip;
delete e.take;
/
return temp;
},
dataType: 'json'
注意看上面两个注释中间那段delete e,这里如果没有清除这些,后端是会接收到的,而没有进行封装的它们,会接收不到我们想要的Page而报错。
④传一个变量用one.get,不用封装类名。
另外,关于@ModelAttribute和@RequestBody的区别还有一个就是@ModelAttribute是用GET请求,GET请求会把传递的参数显示在地址栏,,@RequestBody是用POST请求,不会显示传递的参数,但是两者都会在F12开发工具中看到,具体开发工具的展示也有一定的区别,大家可以自行去看看两个注解的传递时候的区别。