Fork me on GitHub

@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;
}

 

posted @ 2018-11-20 17:32  爱跑步的星仔  阅读(11234)  评论(0编辑  收藏  举报