SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
来源:互联网 发布:24u网络机柜 编辑:程序博客网 时间:2024/05/22 01:44
原文作者:Java我人生(陈磊兴) 原文出处:http://blog.csdn.net/chenleixing/article/details/43740759
今天开发过程中,在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求),调试了好长时间才解决了,特意记录下来,并和大家一同分享一下。
出现这个错误的原因一般最常见的就是后台的实体类bean与前台穿过的类型不匹配,我的就是,因为的javabean中有定义了Date类型和int类型的成员变量,导致转化器在把json数据转化成bean时不能转化,其实如果用JSONObject.toBean方法转化时,这种情况也会报错的。
1、我的解决办法就是把实体类的javabean里边的类型都改成string类型了,在配置SQL语句时用数据库函数to_date或者to_number转化的,如果再java中用到这个字符串类型的日期的话,有必要的话,就用For format=new SimpleDateFormat("yyyy-MM-dd"),format.parse()来转换。
2、其实还可以在实体类中定义Date和int类型对应的字符串类型成员变量,这样前台的表单中field或者name与之对应上即可,这样也成功转成实体类了,不过转成之后,得在java中把它字符串类型的转成对应的Date或者int类型赋给相应的成员变量即可。
3、在就是还有一种方法就是在对应的实体类的对应的非字符串类型的变量的setter方法中传入string类型的,然后在里边用SimpleDateFormat或者Integer进行转化。
4、最后还有一种方法,就是实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解,大部分是可以成功使用的。如果这种方法不可用的话,你看继续尝试如下方法:不过这个前提是前台穿过的日期为json形式而非字符串形式,如前台类似$("#id").val()来获取日期直接传给后台的话是不行的,你需要在前台引入JSON官网的json.js库或者引入jQuery的jquery.json-2.4.js库,然后如果是前者的话就new Date(stringDate).parseJSON()来转化再传给后台,如果是后者的话,$.toJSON(new Date(stringdate))来传给后台,这种方式比较麻烦,有网友留言特意讨论了一下这个问题,所以建议采用第一种方式。
如果你有更好的更优秀的方式解决这种问题,还请您手下留情,留下您的宝贵意见,以使大家共同的学习和成长。
网上我看了一些有关问题,看网友们还有一些其他原因导致这个错误的,特总结归纳了一下方便网友们参考:
(1)log4j的配置文件里错误将部分log打为Info级别所致
(2)传参数的时候,参数名使用了关键字“name”(我试了试,我的没报错正常)
(3)本来要返回json的却忘了加@RequestBody
(4)ajax请求的连接后边忘了加参数
(5)前台传参时参数的顺序与后台实体类的各个属性的顺序不一致(我试了试,我的顺序改变无影响)
(6)如果是传了非实体bean属性的参数过来也会发生这种情况
注意:关于日期类型互相转换的问题,本人重新写了一篇博文:SpringMVC日期类型转换问题三大处理方法归纳,相信会有效解决您遇到的问题!
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误的解决方法
- SpringMVC绑定ajax传递json数据到pojo对象错误(400 Bad Request)
- SpringMVC中出现" 400 Bad Request "错误
- SpringMVC中出现“400 Bad Request错误(参数校验错误)
- 怎么在SpringMvc拦截器或者request中取得前端传递过来的Json数据
- ajax json 调用WCF,服务端FaultException导致 http 400 bad request错误的解决方式
- 前台传过来的json数据,解析request
- SpringMvc 400 Bad Request解决方法
- Apache rewrite 出现 400 Bad Request 的解决方法
- 配置SpringMVC返回JSON遇到的坑/SpringMVC @ResponseBody 415错误处理
- 关于spring-mvc中使用ajax调用后台接口出现400 bad request的问题解决方案
- Play framework后台处理页面传过来的AJAX-JSON数据并给出响应
- !!!
- Android Camera Subsystem 架构(Binder机制)及显示分析(3) .
- linux学习(七) jar命令详解
- div中背景色的设置
- Android中第二次启动程序时,去除引导页
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- ice版本resize 错误调试(Host key verification failed)
- SQL查询表中重复记录
- ANDROID 解析json数据
- ios 中生成随机数
- 网易新闻iOS版使用的开源组件
- LUA字符串分割方法性能比较
- delphii快速获取网页源码方法
- 理解php Hash函数,增强密码安全