spring mvc@requestBody接收json对象字符串
2016-12-17 16:01
671 查看
以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
JavaScript 代码:
Datatables
ajax: {
type:"post",
url:"/DatacenterAPI/user/query",
contentType: 'application/json',
headers: {'token': token},
data:function(data){
let obj = {};//向后台传参数的
obj.name=$('#user_name').val();
obj.loginname=$('#login_name').val();
obj.orgId=$('#org_Id').val();
obj.page = (parseInt(data.start)/parseInt(data.length))+1;
obj.rows=data.length;
return JSON.stringify(obj);
},
dataSrc: function(json){
/*ajax回调*/
return json.data.rows;
}
},
/**
* 查询所有机构信息
* @param dto
* @param token
* @return
*/
@ResponseBody
@RequestMapping(value="query", method=RequestMethod.POST)
public ResultBean querySyorg(@RequestBody OrgInfoDto dto,@RequestHeader(value="token") String token){
ResultBean res = new ResultBean();
Map<String,Object> param = FrameUtils.beanToMap(dto);
Page total = PageHelper.startPage(res.getPage(), res.getRows());
Map<String,Object> data=syorgService.query(param);
res.setData(data);
res.setRecordsFiltered(Long.valueOf(String.valueOf(data.get("recordsFiltered"))));
res.setRecordsTotal(Long.valueOf(String.valueOf(data.get("recordsTotal"))));
res.setTotal(Long.valueOf(String.valueOf(data.get("total"))));
res.setErrorCode(0);
res.setErrorMsg("查询机构成功");
res.setServiceName("org/query");
System.err.println(JSON.toJSONString(res));
return res;
}
JavaScript 代码:
<script type="text/javascript"> / ** * 统一接口请求 * @param {Object} apiName 接口名称如:user/login * @param {Object} data 请求参数对象 * @param {Object} requestMethod 请求方式 如 :'post' * @param {Object} callback 回调方法 */ var httpAjaxApi = function(apiName,requestData,requestMethod,callback){ var userInfo = $.cookie("userInfo"); var token; if(userInfo==null||userInfo=="null"){ token=""; }else{ token = JSON.parse(userInfo).token; } $.ajax({ type: requestMethod, dataType: 'json', url: '/DatacenterAPI/'+apiName, contentType: 'application/json', headers: {'token': token}, data:JSON.stringify(requestData), timeout: 60000, success: function(data) { if(data.errorCode!=0){ if(data.errorCode==2002){ /** * token失效跳转登录页面 */ top.window.location.href = "../../login.html"; }else{ alert(data.errorMsg); } }else{ /** * 业务处理成功回调 */ callback(data); } }, error:function(data){ alert("error"); } }); } </script>
Datatables
ajax: {
type:"post",
url:"/DatacenterAPI/user/query",
contentType: 'application/json',
headers: {'token': token},
data:function(data){
let obj = {};//向后台传参数的
obj.name=$('#user_name').val();
obj.loginname=$('#login_name').val();
obj.orgId=$('#org_Id').val();
obj.page = (parseInt(data.start)/parseInt(data.length))+1;
obj.rows=data.length;
return JSON.stringify(obj);
},
dataSrc: function(json){
/*ajax回调*/
return json.data.rows;
}
},
/**
* 查询所有机构信息
* @param dto
* @param token
* @return
*/
@ResponseBody
@RequestMapping(value="query", method=RequestMethod.POST)
public ResultBean querySyorg(@RequestBody OrgInfoDto dto,@RequestHeader(value="token") String token){
ResultBean res = new ResultBean();
Map<String,Object> param = FrameUtils.beanToMap(dto);
Page total = PageHelper.startPage(res.getPage(), res.getRows());
Map<String,Object> data=syorgService.query(param);
res.setData(data);
res.setRecordsFiltered(Long.valueOf(String.valueOf(data.get("recordsFiltered"))));
res.setRecordsTotal(Long.valueOf(String.valueOf(data.get("recordsTotal"))));
res.setTotal(Long.valueOf(String.valueOf(data.get("total"))));
res.setErrorCode(0);
res.setErrorMsg("查询机构成功");
res.setServiceName("org/query");
System.err.println(JSON.toJSONString(res));
return res;
}
相关文章推荐
- SpringMVC @RequestBody接收Json对象字符串--http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024741.html
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串 demo
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串 @ResponseBody处理json数据类型
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串
- SpringMVC @RequestBody接收Json对象字符串