springmvc 提交表单报错:405 GET not support...

今天在做新增表单的时候,出现了一个小bug,耗费了我和同事一下午时间才解决,由于这个错误很常见,但引起这个错误的原因却很多,特此记录一下。

由于前端使用的ajax方式,提交成功时服务器会返回相应信息提示是否提交成功。前端返回提交失败之后,在控制器打个断点,奇怪的事情发生了。。。。

断点处竟然没有执行!!

看了一眼mapping映射,没问题。前台F12一下,发现console报错了:405错误,点开后浏览器显示http 405 GET not support …..

此时我蒙蔽了,明明表单提交方式为post,控制器也制定了RequestMethod = post,为何报了这个错误。去网上搜了一下,发现不少人遇到了这个问题,但他们的错误根源和我的不一样。但是报的错误却一样,说明这个问题的出现是多种原因导致的。我一一进行排查,发现都不行。

后来我想,他不是说get不支持吗,那我就给控制器的resquestmethod改成post和get都支持的形式。结果奇怪的事情又发生了。断点是进入了,但提交的内容全是null,这时候,我突然意识到肯定是表单的内容出了问题,比如表单提交的数据类型与实体类不匹配,或是超出了长度限制,导致表单提交失败。 这个表单的内容很杂,有各种类型的数据,我一一与实体类对应,发现表单中有两个日期控件是精确到年月日的,而我实体类里设置的是Date类型,按理说也没错啊,但我还是把这两个日期控件注释掉重新提交,发现竟然可以了!!我错了,Date类型竟然是默认精确到时分秒的。在这个属性上添加上@DateFormat指定该属性为年月日形式,一切突然ok了。

总结一下:出现这种问题可以从以下方面入手。
1.查看前台控制台,有些问题后台走不通的话,很可能就是前端错误导致的。
2.检查表单数据类型是否与实体类一致
3.检查访问路径映射和RequestMethod。

猜你喜欢

转载自blog.csdn.net/KKALL1314/article/details/82047827