您的位置:首页 > 编程语言 > Java开发

关于java前后端交互之json数据传输的问题

2019-07-16 16:21 429 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_37892718/article/details/96142658

①需要接收一个实体类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开发工具中看到,具体开发工具的展示也有一定的区别,大家可以自行去看看两个注解的传递时候的区别。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: