SpringMVC绑定ajax传递json数据到pojo对象错误(400 Bad Request)
问题如标题所述,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日期类型转换问题三大处理方法归纳》这两篇博文和博文的评论给了我非常大的帮助,感谢作者,其他的解决方法也可以从这两篇博文中找到。
参考:
- http://blog.csdn.net/chenleixing/article/details/43740759
- http://blog.csdn.net/chenleixing/article/details/45190371
- @InitBinder 用法
- SpringMVC中的参数绑定总结
- SpringMVC Ajax 获取参数的方法
SpringMVC绑定ajax传递json数据到pojo对象错误(400 Bad Request)相关推荐
- boke例子: freermarker:在使用ajax传递json数据的时候多出冒号
boke例子: freermarker:在使用ajax传递json数据的时候多出冒号 json数据是用JSON.stringify()格式化的数据,然后用ajax传递,发现数据多出一个冒号:, 后来度 ...
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...
- Ajax传递json数据
Ajax的传递json数据的实现: 看这篇之前建议大家去看看前面两篇文章: 1.Ajax基本案例详解之$.ajax的实现 2.Ajax基本案例详解之$.get的实现 现在来看一下具体的内容,在inde ...
- Struts2中通过Ajax传递json数据
1.导入Struts2所需要的jar包 下载Struts2的jar包时,可以下载struts-2.5.13-min-lib.zip,然后放到项目的/WebContent/WEB-INF/lib路径下 ...
- 使用jq实现ajax传递json数据,使用jQuery的$ .ajax()将多个Json对象作为数据传递
我正在将数据发布到MVC控制器,并且试图维护状态以及乐观并发性.我目前正在回发JSON请求,但可以接受其他可行的选择吗? 我已经使用以下命令发布了名称/值集合: $.ajax({ url: g_app ...
- jquery ajax json传递数组,jQuery ajax 传递JSON数组到Spring Controller
jQuery ajax传递单个JSON对象到后台很容易,这里记录的是传递多个JSON对象组成的JSON数组到java 后台,并说明java如何解析JSON数组. 1.js代码 var relation ...
- JSON进阶第二篇 AJAX方式传递JSON数据
上一篇<JSON进阶第一篇 在PHP与javascript 中使用JSON>示范了在PHP和javascript中如何使用JSON类型的数据,本篇将介绍用AJAX方式得到JSON数据从而动 ...
- ajax如何传递josn数据,jq之ajax以及json数据传递
闭包演示 function transfer(){ var dat = $( "#sel" ).val(); //console.log(dat) $.ajax({ type:&q ...
- springMVC通过ajax传递参数list对象或传递数组对象到后台
springMVC通过ajax传递参数list对象或传递数组对象到后台 环境: 前台传递参数到后台 前台使用ajax 后台使用springMVC 传递的参数是N多个对象 JSON对象和JSON字符串 ...
最新文章
- IOS初级:NSKeyedArchiver
- java synchronized 原理_Java Synchronized的原理
- Vue里 v-for原理
- 深度 | EB级规模大数据平台核心技术揭秘(上)
- 【转载】SAP用户出口清单(User Exits)
- 在无任何报错的情况下 pagehelper.startpage分页无效问题
- 【算法】O(n2)时间复杂度和O(nlogn)排序算法的简要分析
- 程序员必须收藏的 58 个网站
- 科研伦理与学术规范-期末考试答案
- 手把手介绍Manjaro中添加Google输入法---亲身测试,成功安装
- 惠普微型计算机w7系统,惠普笔记本电脑一键重装系统win7
- HanLP --- 依存句法分析
- 基于MATLAB实现进制数转换
- photoshop插画插件_一键生成2.5D风格插画的PS插件
- 高新技术企业认定条件
- Docker入门详细教程,全网最全!
- 51nod 2534 最小旅行路线------------------------------dp
- spring security简单配置
- 回顾2019展望2020
- 高校实验室信息化管理平台——理化生实验室应用建设