表单提交报400错误要怎么解决?

 我来答
惠企百科
2022-12-11 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部
原因:\x0d\x0a在SpringMVC中的Action中处理前台ajax请求传过来的json数据直接转成对应的实体类时出错:400 Bad Request,后台也不报错,400指的的是请求无效(请求有语法问题或者不能满足请求)。\x0d\x0a1:一般最常见的就是后台的实体类bean与前台穿过的类型不匹配,如你的javabean中有定义了Date类型和int类型的成员变量,导致转化器在把json数据转化成bean时不能转化。\x0d\x0a2:log4j的配置文件里错误将部分log打为Info级别所致\x0d\x0a3:要返回json的却忘了加@ResponseBody\x0d\x0a4:ajax请求的连接后边忘了加参数,如url:basePath + "kscj/unbill.do?jqid="+jqids\x0d\x0a\x0d\x0a5:传了非实体bean属性的参数过来。\x0d\x0a6:controller指定的参数名称与前台不一致,如:使用了@RequestParam(value="userName")而前台必须指定该名称\x0d\x0a\x0d\x0a@RequestMapping("/hello.do") \x0d\x0apublic String hello(HttpServletRequest req,HttpServletResponse resp,@RequestParam(value="userName")String user ){ \x0d\x0a request.setAttribute("user", user); \x0d\x0a return "hello"; \x0d\x0a} \x0d\x0a\x0d\x0a也可以指定该参数是非必须的required=false,如:\x0d\x0a\x0d\x0a@RequestMapping("/hello.do") \x0d\x0apublic String hello(HttpServletRequest req,HttpServletResponse resp,@RequestParam(value="userName",required=false)String user){ \x0d\x0a request.setAttribute("user", user); \x0d\x0a return "hello"; \x0d\x0a} \x0d\x0a\x0d\x0a解决方法:\x0d\x0a1:把实体类的javabean里边的类型都改成string类型,在配置SQL语句时用数据库函数to_date或者to_number转化的,如果再java中用到这个字符串类型的日期的话,有必要的话,就用For format=new SimpleDateFormat("yyyy-MM-dd"),format.parse()来转换。\x0d\x0a2:在对应的实体类的对应的非字符串类型的变量的setter方法中传入string类型的,然后在里边用SimpleDateFormat或者Integer进行转化。\x0d\x0a如:public void setBjsj(Date bjsj) {\x0d\x0a this.bjsj = bjsj;\x0d\x0a } \x0d\x0a变成\x0d\x0apublic void setBjsj(String bjsj) throws ParseException {\x0d\x0a SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");\x0d\x0a this.bjsj =sdf.parse(bjsj) ;\x0d\x0a\x0d\x0a}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式