springmvc 400错误
前后端交互数据的时候,经常需要前端把数据提交给后端,前端一般就用ajax提交数据,就像下面这样:
1 | $.ajax({ |
然后后端采用spring的代码如下:
1 | @RequestMapping(value = "post_url", method = RequestMethod.POST) |
然后就是JsonParam
这个类的定义:
1 | public class JsonParam implements Serializable { |
这样的话是可以从后端接受参数的,但是后来觉得这个JsonParam
定义的不是很好,所以就把name
改成了key
,结果就报错了400 bad request
,不知道为啥,连请求都报错了,更别说参数的接收和解析了,网上查资料,找到一个答案提示了我:
Verify the following things:
Whether the name of JSON matches the User class’s field name.
Also check whether JSON value is supported by the corresponding field name datatype in User class.
Do try it, I have faced the same issue numerous times.
然后我才明白,之前我自定义的Json类的两个属性就是name,value
,然后改成key,value
就报错了,所以错误的根源应该就是前端传过来的数据是name=xxx,value=xxx
的数据格式,然后后端想按key=xxx,value=xxx
这样来接收解析,然后就报400 bad request
这个错误了,如果直接使用request来接收应该就没有这个问题了,但是参数和参数的值就得自己解析了.
具体的详细策略可以看spring源码,大概就是需要实现一些转化器来实现http-->bean
之间的互转