问题如标题所述,ajax向SpringMVC Controller传递JSON数据,遇到了错误“Failed to load resource: the server responded with a status of 400 (Bad Request)”,该错误为前端报错,JSON数据压根没有被Controller接收。因为后端想通过接收JSON数据直接转换为pojo对象,进行pojo绑定。

经过一晚上的调试,最后定位问题于后台Controller无法转换接收到的JSON数据。进一步寻找解决方案,定位到了问题原因:pojo类中存在Date类型成员变量,转换器无法将Date类型成员变量正确转换。通过使用没有Data类型数据成员的pojo类进行测试,发现确实是问题的真正原因。

1. 解决方案

实体类中加日期格式化注解

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date algorithmTime;

进一步,在相对应的pojo类中增添默认构造函数,没有这一步可能无法解决问题,所以该步骤极为重要。可能是由于在转换器转换过程中要调用默认构造函数来构造pojo对象。

public class Algorithm {//默认构造函数public Algorithm(){}
}

2. SpringMVC接收ajax的JSON数据,后端绑定pojo对象

前端ajax:

 var alg={algorithmName:algName,algorithmDescribe:algDesc,classId:classId,className:className};$.ajax({type:'POST',url:'algorithm/add',data:JSON.stringify(alg),dataType:'json',contentType:'application/json; charset=utf-8',async:true,success:function(data){console.log(data['algInfo']);}});

Controller处理:

@RequestMapping(value = "/algorithm/add",method = RequestMethod.POST,consumes = "application/json")
@ResponseBody
public String addAlgorithm(@RequestBody Algorithm algorithm){/*** 处理步骤**/Map<String,String> map=new HashMap<String, String>();map.put("algInfo",algorithm.toString());return map;
}

该问题还有许多解决的办法,但是这个方法是最简单的。在解决这个问题的过程中,《SpringMVC中出现”400 Bad Request”错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法》和《SpringMVC日期类型转换问题三大处理方法归纳》这两篇博文和博文的评论给了我非常大的帮助,感谢作者,其他的解决方法也可以从这两篇博文中找到。

参考:

  1. http://blog.csdn.net/chenleixing/article/details/43740759
  2. http://blog.csdn.net/chenleixing/article/details/45190371
  3. @InitBinder 用法
  4. SpringMVC中的参数绑定总结
  5. SpringMVC Ajax 获取参数的方法

SpringMVC绑定ajax传递json数据到pojo对象错误(400 Bad Request)相关推荐

  1. boke例子: freermarker:在使用ajax传递json数据的时候多出冒号

    boke例子: freermarker:在使用ajax传递json数据的时候多出冒号 json数据是用JSON.stringify()格式化的数据,然后用ajax传递,发现数据多出一个冒号:, 后来度 ...

  2. Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)

    form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...

  3. Ajax传递json数据

    Ajax的传递json数据的实现: 看这篇之前建议大家去看看前面两篇文章: 1.Ajax基本案例详解之$.ajax的实现 2.Ajax基本案例详解之$.get的实现 现在来看一下具体的内容,在inde ...

  4. Struts2中通过Ajax传递json数据

    1.导入Struts2所需要的jar包 下载Struts2的jar包时,可以下载struts-2.5.13-min-lib.zip,然后放到项目的/WebContent/WEB-INF/lib路径下 ...

  5. 使用jq实现ajax传递json数据,使用jQuery的$ .ajax()将多个Json对象作为数据传递

    我正在将数据发布到MVC控制器,并且试图维护状态以及乐观并发性.我目前正在回发JSON请求,但可以接受其他可行的选择吗? 我已经使用以下命令发布了名称/值集合: $.ajax({ url: g_app ...

  6. jquery ajax json传递数组,jQuery ajax 传递JSON数组到Spring Controller

    jQuery ajax传递单个JSON对象到后台很容易,这里记录的是传递多个JSON对象组成的JSON数组到java 后台,并说明java如何解析JSON数组. 1.js代码 var relation ...

  7. JSON进阶第二篇 AJAX方式传递JSON数据

    上一篇<JSON进阶第一篇 在PHP与javascript 中使用JSON>示范了在PHP和javascript中如何使用JSON类型的数据,本篇将介绍用AJAX方式得到JSON数据从而动 ...

  8. ajax如何传递josn数据,jq之ajax以及json数据传递

    闭包演示 function transfer(){ var dat = $( "#sel" ).val(); //console.log(dat) $.ajax({ type:&q ...

  9. springMVC通过ajax传递参数list对象或传递数组对象到后台

    springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...

最新文章

  1. IOS初级:NSKeyedArchiver
  2. java synchronized 原理_Java Synchronized的原理
  3. Vue里 v-for原理
  4. 深度 | EB级规模大数据平台核心技术揭秘(上)
  5. 【转载】SAP用户出口清单(User Exits)
  6. 在无任何报错的情况下 pagehelper.startpage分页无效问题
  7. 【算法】O(n2)时间复杂度和O(nlogn)排序算法的简要分析
  8. 程序员必须收藏的 58 个网站
  9. 科研伦理与学术规范-期末考试答案
  10. 手把手介绍Manjaro中添加Google输入法---亲身测试,成功安装
  11. 惠普微型计算机w7系统,惠普笔记本电脑一键重装系统win7
  12. HanLP --- 依存句法分析
  13. 基于MATLAB实现进制数转换
  14. photoshop插画插件_一键生成2.5D风格插画的PS插件
  15. 高新技术企业认定条件
  16. Docker入门详细教程,全网最全!
  17. 51nod 2534 最小旅行路线------------------------------dp
  18. spring security简单配置
  19. 回顾2019展望2020
  20. 高校实验室信息化管理平台——理化生实验室应用建设

热门文章

  1. win7下逻辑备份任务
  2. 两个excel有两列不完全相同的数据,以它们为匹配ID,使一个excel中的数据转移到另外一个excel中
  3. css outline是什么意思,用法
  4. 高中学历学Java能找到工作吗?
  5. 如何免费申请亚洲诚信TrustAsia通配符证书并部署到宝塔面板
  6. 第二模块:试用期问题深度剖析
  7. 三子棋小游戏,实现人机对战,电脑可做简单拦截(C语言版)
  8. linux CPU主频设置
  9. pwn学习——ret2libc1
  10. windows下ios证书申请流程(在线傻瓜式)