在实际项目开发过程中,前后端单表交互的虽然比较多;但是像前端包括三个以上实体类的变量,后台接收前端传过来的值的时候就变得复杂一些了,今天给在这里记录一下怎么实现这种操作。主要分为两种方法:
1、第一种方法:
- 前台传值对象封装可以参照以下代码格式;
{"对象一":{},"对象二":{},"对象三":{}}
{
"name": "BeJson",
"url": "http://www.bejson.com",
"page": 88,
"isNonProfit": true,
"address": {
"street": "科技园路.",
"city": "江苏苏州",
"country": "中国"
},
"links": [
{
"name": "Google",
"url": "http://www.google.com"
},
{
"name": "Baidu",
"url": "http://www.baidu.com"
},
{
"name": "SoSo",
"url": "http://www.SoSo.com"
}
]
}
- Ajax请求保持不变
return ajax.ajax({
type: 'post',
url: jsonUrl.demo+"/add",
params: params
});
- 后台实体类需要封装成VO格式
public class Demo{
private String name;
private String url;
private String page;
private String isNonProfit;
private String address; //封装address实体类
private String links; //封装links实体类
/**
*省略set、get方法
*/
}
- 控制器接收方法如下:
@ApiOperation(value = "demo", notes = "demo")
@Permission("demo:add")
@PostMapping(value = "/add")
public ReturnEntity add(@RequestBody Demo demo) throws Exception {
ReturnBody returnBody = null;
returnBody = demoService.insert(demo);
return new ReturnEntity(returnBody)
}
这样在Debug时就能在后台对应方法里面看到所有的实体类的前端输入的变量值;
2、第二种方法
- 前端ajax请求时加上如下语句
data:JSON.stringify(data),
headers:{
'Accept': 'application/json',
'Content-Type': 'application/json'
}
后台直接对应三个实体类接收前端传值即可;
注意: 一定要注意前端传值对象的格式要和后台接收值时对应,不然接收不到值。