springmvc form表单提交报400错误,出现400错误的原因及解决方法:
2018-03-15 23:24
686 查看
springmvc form表单提交报400错误,出现400错误的原因及解决方法:原因:在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400请求有问题或者不能满足请求)。1:一般最常见的就是后台的实体类豆与前台穿过的类型不匹配,如你的的javabean中有定义了日期类型和INT类型的成员变量,导致转化器在把JSON数据转化成豆腐时不能转化。2:log4j的的配置文件里错误将部分记录打为信息级别所致3:要返回JSON的却忘了加@ResponseBody4:ajax请求的连接后边忘了加参数,如url:basePath +“kscj / unbill.do?jqid =”+ jqids
5:传了非实体bean的属性的参数过来。6:控制器指定的参数名称与前台不一致,如:使用了@RequestParam(值= “username” 的)而前台必须指定该名称[java] 查看纯文本 @RequestMapping (“/hello.do” )
public String hello(HttpServletRequest req,HttpServletResponse resp,@ RequestParam (value = “userName” )String user){
reques
db7c
t.setAttribute(“user” ,user);
返回“你好” ;
}
也可以指定该参数是非必须的需要=假,如:[java] 查看纯文本 @RequestMapping (“/hello.do” )
public String hello(HttpServletRequest req,HttpServletResponse resp,@ RequestParam (value = “userName” ,required = false )String user){
request.setAttribute(“user” ,user);
返回“你好” ;
}
解决方法:1:把实体类的JavaBean的里边的类型都改成字符串类型,在配置SQL语句时用数据库函数TO_DATE或者TO_NUMBER转化的,如果再java的中用到这个字符串类型的日期的话,有必要的话,就用对于format = new SimpleDateFormat(“yyyy-MM-dd”),format.parse()来转换。2:在对应的实体类的对应的非字符串类型的变量的设置器方法中传入串类型的,然后在里边用的SimpleDateFormat或者整数进行转化。如: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(图案= “YYYY-MM-DD”)注解。弹簧提供了FormattingConversionService和DefaultFormattingConversionService来完成对象的解析和格式化。首先引入格式化罐子:把乔达时间包添加到之前的项目中,这里用的是乔达时间 - 2.3.jar,然后在实体类中这样写:
@NumberFormat(style = Style.CURRENCY)私人 双 钱;@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
私人 日期日期;
注意:这里的金钱和时间不再是字符串类型,而是它们自己本来的类型。
总结:。方法2和方法3我实行过,对于字段非常少的情况下是可行的但是对于字段非常多的情况下,这样错是一件非常可怕的事情实际开发中数据库设计是由公司数据库人员自己定义的,假如日期类型和数值类型,公司就明确规定使用日期和整数类型,那么转换是必须要做的。
5:传了非实体bean的属性的参数过来。6:控制器指定的参数名称与前台不一致,如:使用了@RequestParam(值= “username” 的)而前台必须指定该名称[java] 查看纯文本 @RequestMapping (“/hello.do” )
public String hello(HttpServletRequest req,HttpServletResponse resp,@ RequestParam (value = “userName” )String user){
reques
db7c
t.setAttribute(“user” ,user);
返回“你好” ;
}
也可以指定该参数是非必须的需要=假,如:[java] 查看纯文本 @RequestMapping (“/hello.do” )
public String hello(HttpServletRequest req,HttpServletResponse resp,@ RequestParam (value = “userName” ,required = false )String user){
request.setAttribute(“user” ,user);
返回“你好” ;
}
解决方法:1:把实体类的JavaBean的里边的类型都改成字符串类型,在配置SQL语句时用数据库函数TO_DATE或者TO_NUMBER转化的,如果再java的中用到这个字符串类型的日期的话,有必要的话,就用对于format = new SimpleDateFormat(“yyyy-MM-dd”),format.parse()来转换。2:在对应的实体类的对应的非字符串类型的变量的设置器方法中传入串类型的,然后在里边用的SimpleDateFormat或者整数进行转化。如: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(图案= “YYYY-MM-DD”)注解。弹簧提供了FormattingConversionService和DefaultFormattingConversionService来完成对象的解析和格式化。首先引入格式化罐子:把乔达时间包添加到之前的项目中,这里用的是乔达时间 - 2.3.jar,然后在实体类中这样写:
@NumberFormat(style = Style.CURRENCY)私人 双 钱;@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)
私人 日期日期;
注意:这里的金钱和时间不再是字符串类型,而是它们自己本来的类型。
总结:。方法2和方法3我实行过,对于字段非常少的情况下是可行的但是对于字段非常多的情况下,这样错是一件非常可怕的事情实际开发中数据库设计是由公司数据库人员自己定义的,假如日期类型和数值类型,公司就明确规定使用日期和整数类型,那么转换是必须要做的。
相关文章推荐
- 【已解决】SpringMVC表单提交结果页面出现400错误的可能原因分析
- form.submit()不能提交表单的错误原因及解决方法
- YYII框架中表单提交出现Bad Request (#400)---Unable to verify your data submission的错误解决方法
- form.submit()不能提交表单的错误原因及解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- 使用get方法提交form表单时出现乱码解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- [j2ee][servlet]使用get方法提交form表单时出现乱码解决方法
- 【解决】springmvc 前台表单提交数据返回400错误
- SpringMVC form 表单提交报400错误
- SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- 使用get方法提交form表单时出现乱码解决方法
- 服务器出现 HTTP 400、404、500、502 错误原因及解决方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法