码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

时间:2015-02-12 09:23:48      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:networkerror400 bad   springmvc处理json   responsebody处理ajax   400 bad request   spring报错responsebody   

        今天开发过程中,在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求),调试了好长时间才解决了,特意记录下来,并和大家一同分享一下。

        出现这个错误的原因一般最常见的就是后台的实体类bean与前台穿过的类型不匹配,我的就是,因为的javabean中有定义了Date类型和int类型的成员变量,导致转化器在把json数据转化成bean时不能转化,其实如果用JSONObject.toBean方法转化时,这种情况也会报错的。

       我的解决办法就是把实体类的javabean里边的类型都改成string类型了,在配置SQL语句时用to-date或者to_number转化的。

        其实还可以在实体类中定义Date和int类型对应的字符串类型成员变量,这样前台的表单中field或者name与之对应上即可,这样也成功转成实体类了,不过转成之后,得在java中把它字符串类型的转成对应的Date或者int类型赋给相应的成员变量即可。

       在就是还有一种方法就是在对应的实体类的对应的非字符串类型的变量的setter方法中传入string类型的,然后在里边用SimpleDateFormat或者Integer进行转化。

       最后还有一种方法比较简单,就是实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解。

       网上我看了一些有关问题,看网友们还有一些其他原因导致这个错误的,特总结归纳了一下方便网友们参考:

1、log4j的配置文件里错误将部分log打为Info级别所致
2、传参数的时候,参数名使用了关键字“name”(我试了试,我的没报错正常)
3、本来要返回json的却忘了加@RequestBody
4、ajax请求的连接后边忘了加参数

转载请注明—作者:Java我人生(陈磊兴)   原文出处:http://blog.csdn.net/chenleixing/article/details/43740759



       最后,认真看过的网友们,大神们,如有感觉我这个程序猿有哪个地方说的不对或者不妥或者你有很好的

议或者建议或点子方法,还望您大恩大德施舍n秒的时间留下你的宝贵文字(留言),以便你,我,还有广大的程序猿们更快地成长与进步.......





SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

标签:networkerror400 bad   springmvc处理json   responsebody处理ajax   400 bad request   spring报错responsebody   

原文地址:http://blog.csdn.net/chenleixing/article/details/43740759

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!