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

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

你可能感兴趣的:(关于java前后端交互之json数据传输的问题)