springmvc ajax form表单提交出现400报错

springmvc ajax form表单提交出现400报错ajax提交form表单报400的原因总结

大家好,又见面了,我是你们的朋友全栈君。

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



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 plain  
copy

 
在CODE上查看代码片
派生到我的代码片

  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 plain  
copy

 
在CODE上查看代码片
派生到我的代码片

  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  (总结的很好,确实能解决问题!!!)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133477.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • css实现横向滚动条(css纵向滚动条)

    注意:(滚动条设置的width、height,分别是对应纵向滚动条宽度、横向滚动条高度,无法修改纵向滚动条高度、横向滚动条宽度数值只介绍Google浏览器滚动条样式,常用属性如下)::-webkit-scrollbar 滚动条整体样式 ::-webkit-scrollbar-button 一设置滚动条样式,滚动条两端的按钮图标就消失,但可以重新设置图片、新样式 ::-w…

  • 如何下载离线地图数据(支持谷歌、百度、高德等所有地图源)

    下载离线地图数据(支持谷歌、百度、高德等所有地图源)发布时间:2019-03-12版权:离线地图分为两种:一种叫“金字塔瓦片”数据,一种叫“矢量地图数据”。我们看的在线地图比如,百度,谷歌,高德等等网页上的地图,都是金字塔瓦片;另外一种是手机上用来导航的,比如高德地图APP,也可以下载离线地图数据,这个就是矢量的。卫星影像地图都是金字塔瓦片,无矢量数据。…

  • CentOS7 部署 RAID 磁盘阵列

    CentOS7 部署 RAID 磁盘阵列RAID(RedundantArrayoflndependentDisk独立冗余磁盘阵列)就是把多块独立的物理磁盘按不同的方式组合起来形成一个磁盘组(逻辑硬盘)。从而提供比单个磁盘更高的存储性能和提供数据备份技术。

  • android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义Toast

    android toast居中显示_android Toast 弹出在屏幕中间位置以及自定义ToastToast我想我们应该使用的都很多,一般我们使用默认设置较多,但是默认设置往往不能满足我们的需求,那我们现在来自定义下:默认Toast:Toast.makeText(MainActivity.this,”点击按钮”,Toast.LENGTH_SHORT).show();设置Toast位置:通过setGravity设置Toast位置,可以是Gravity.CENTER:中间Gravity.BOTT…

  • python 字典最外层使用_python字典底层实现

    python 字典最外层使用_python字典底层实现前言问题1:python中的字典到底是有序还是无序问题2:python中字典的效率如何python字典底层原理在Python3.5以前,字典是不能保证顺序的,键值对A先插入字典,键值对B后插

  • 基于流水线的CPU的设计「建议收藏」

    基于流水线的CPU的设计「建议收藏」1.我们知道,CPU是电脑的中央处理单元,CPU到底是怎么连续的执行指令的。我们以MIPS为例,探究一下。2.基础的知识我们需要知道,CPU执行一条指令时分为五个阶段的:(1)在内存取指令(2)根据指令读寄存器(3)利用寄存器中的数据ALU(4)访问内存(5)写寄存器。一般是这五个阶段,但是很多指令并不是说这五个阶段全部都在做事情。比如add,它只有四个阶段,其中不涉及到内存的访问。但是,又有…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号