@RequestBody接收的是一个json对象


  一直以为在SpringMVC环境中,@RequestBody接收的是一个json对象,调试代码时没有成功,后来才发现,其实 @RequestBody接收的是一个json字符串,而不是一个json对象。

  解决方案:用JSON.stringify(data)的方式将对象变成字符串,同时ajax请求的时候也要指定dataType: "json",contentType:"application/json" ,这样就可以轻易的将一个对象传到Java端,使用@RequestBody即可绑定对象。

  contentType:默认为"application/x-www-form-urlencoded",该默认值适合大多数应用场合。"application/json"表明参数是json字符串。

  dataType: 预期服务器返回的数据类型。可用的类型如下:

  • xml:返回XML文档,可用JQuery处理;
  • html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行;
  • script:返回纯文本JavaScript代码,不会自动缓存结果,除非设置了cache参数,注意在远程请求时(不在同一个域下),所有post请求都将转为get请求;
  • json:返回JSON数据;
  • jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个 “?”为正确的函数名,以执行回调函数;
  • text:返回纯文本字符串。

js代码:

$.ajax({ url : context + "/service/message/saveZbl",  data :JSON.stringify({"uuid":uuid,"tableName":tableName,"columnName":columnName}), dataType: "json", contentType:"application/json", type:"POST", success : function(data){ if(data > 0){ dialog.close(); dialog.remove(); return false; }else{ $.sticky( "保存失败", { style : 'success', autoclose : 1000, position : 'center' }); } } });

Java代码:

@RequestMapping(value = "/saveZbl") @ResponseBody public int saveZbl(HttpServletRequest request,@RequestBody JcZntxZbb zbb) { return 1; }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM