此为转载:确实很不错,最下有原文的传送门



springmvc form表单提交报400错误,出现400错误的原因及解决方法:

原因:

在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求)。

1:一般最常见的就是后台的实体类bean与前台穿过的类型不匹配,如你的javabean中有定义了Date类型和int类型的成员变量,导致转化器在把json数据转化成bean时不能转化。

2:log4j的配置文件里错误将部分log打为Info级别所致

3:要返回json的却忘了加@ResponseBody

4:ajax请求的连接后边忘了加参数,如url:basePath + "kscj/unbill.do?jqid="+jqids

5:传了非实体bean属性的参数过来。

6:controller指定的参数名称与前台不一致,如:使用了@RequestParam(value="userName")而前台必须指定该名称

[java] view plaincopy
  1. @RequestMapping("/hello.do")
  2. public String hello(HttpServletRequest req,HttpServletResponse resp,@RequestParam(value="userName")String user ){
  3. request.setAttribute("user", user);
  4. return "hello";
  5. }

也可以指定该参数是非必须的required=false,如:

[java] view plaincopy
  1. @RequestMapping("/hello.do")
  2. public String hello(HttpServletRequest req,HttpServletResponse resp,@RequestParam(value="userName",required=false)String user){
  3. request.setAttribute("user", user);
  4. return "hello";
  5. }

解决方法:

1:把实体类的javabean里边的类型都改成string类型,在配置SQL语句时用数据库函数to_date或者to_number转化的,如果再Java中用到这个字符串类型的日期的话,有必要的话,就用For format=new SimpleDateFormat("yyyy-MM-dd"),format.parse()来转换。

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

如:public void setBjsj(Date bjsj) {
        this.bjsj = bjsj;
    }    
变成

public void setBjsj(String bjsj) throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         this.bjsj =sdf.parse(bjsj) ;

}

备注:

3:在实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解。

spring提供了FormattingConversionService和DefaultFormattingConversionService来完成对象的解析和格式化。

首先引入格式化jar:把Joda-Time包添加到之前的项目中,这里用的是joda-time-2.3.jar,然后在实体类中这样写:

@NumberFormat(style=Style.CURRENCY)

private double money;

@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

private Date date;

注意:这里的money和date不再是String类型,而是它们自己本来的类型。




转载出处:http://blog.csdn.net/u014079773/article/details/51865178  (总结的很好,确实能解决问题!!!)

springmvc ajax form表单提交出现400报错相关推荐

  1. from提交ajax,form表单提交与ajax消息传递

    form表单提交与ajax消息传递 1.前后端传输数据编码格式contentType: urlencoded 对应的数据格式:name=xxx&password=666 后端获取数据:requ ...

  2. ajax form表单提交,serialize和formData的区别

    ** ajax form表单提交,serialize和formData的区别 ** 把form表单里面的内容序列化并用ajax提交,如下方法: function ajaxFormSub(id,url) ...

  3. php ajax form表单提交,Ajax方法实现Form表单提交的方法

    这次给大家带来Ajax方法实现Form表单提交的方法,Ajax方法实现Form表单提交的注意事项有哪些,下面就是实战案例,一起来看一下. 写在前面的话 在使用form表单的时候,一旦点击提交触发sub ...

  4. ajax form表单提交 input file中的文件

    现今的主流浏览器由于ajax提交form表单无法把文件类型数据提交到后台,供后台处理,可是开发中由于某些原因又不得不用ajax提交文件, 为了解决这个问题我走了不少弯路: 1.用原生的 input f ...

  5. ajax form表单提交_LayUI提交表单,监听select,分页组件

    1.LayUI提交表单 这几天做项目,用到提交layui框架的弹出层的表单,因为需要在提交表单后,关闭当前弹出层,同时刷新父窗口的数据,因此,用普通的提交就不行了,因为普通的提交到后台之后没有返回值, ...

  6. ajax form表单提交_开发日志:金数据表单自动提交脚本

    最近学校要求我们每天通过一个在线表单打卡自己在家做的体育课项目,在提交的时候我突然想了下如果能有一个自动的系统每天帮我自动打卡岂不是能省很多时间?而且我一直很想学Python的网络爬虫以及服务器后端的 ...

  7. 自定义组件使用el-dialog,且内含表单时,表单提交时字段报错undefined

    原因:初始化表单时,表单并没有拿到数据,渲染就会出错 解决方法:在自定义组件内通过v-if对数据的渲染加判断 具体操作如下: <my-component v-if="userInfoD ...

  8. layui ajax form 表单提交 后 清空

    1. 2.ajax 提交成功后,执行 $("#my_question")[0].reset(); 注:https://blog.csdn.net/chenxihua1/articl ...

  9. Form表单提交成功,但是后台并没有处理数据且debug无效

    今天碰到一个情况,有一个form表单(用ww标签),表单内容是一个实体类的注册信息,点击提交后,发现没有效果,但是前端debugger后,居然ajxa跳转进入success中,居然是成功,但是返回的数 ...

最新文章

  1. CentOS7下安装nvm
  2. Gartner 认定 Microsoft 为具有远见卓识的云基础结构即服务提供商
  3. Spring Mybatis实例SqlSessionDaoSupport混用xml配置和注解
  4. Vue + Element UI 实现权限管理系统 前端篇(八):管理应用状态
  5. js reduce实现中间件_实现redux中间件-洋葱模型
  6. Rxjs debounce 操作符在 SAP Spartacus 函数节流中的一个实际使用例子
  7. 数据结构入门之链表(C语言实现)
  8. 鲲鹏服务器的作用,眼见为实,华为鲲鹏架构服务器生态大揭秘
  9. k1658停运到什么时候_商洛一小区电梯停运10余天,高层业主:我可太难啦
  10. 高性能反向代理软件HAProxy(一)之基本概念
  11. layUI固定列重复
  12. WebStorm WiFi真机同步无法安装成功及appLoader无法连接
  13. Navicat Premium 12安装包下载
  14. 建筑识图与构造【2】
  15. 前端vue使用ECharts如何制作精美统计图
  16. 十大排序算法(C++)(时间复杂度O(nlogn)篇:希尔排序、堆排序、快速排序、归并排序)
  17. windows批量改名
  18. 网易云对象存储获取私有对象下载链接打不开的问题
  19. Ubuntu16.04安装Redshift色温调节工具
  20. ggplot2图形排版:patchwork包简单入门

热门文章

  1. Visio给图片加框,然后拉成矩形状
  2. 从Process xxxx (pid xxx) has died分析
  3. bcm交换芯片组播泛洪问题处理
  4. Docker快速入门总结
  5. echarts实现环形进度条
  6. Android开发之属于你的短信验证码(二)
  7. unity ——UI用户界面
  8. star ccm java api_Star CCM+使用Java宏实现批处理.doc
  9. html广告拦截网吧,python模拟网吧浏览器劫持网页弹广告
  10. 【 D3.js 入门系列 --- 10 】 地图的绘制