昨天在进行企业微信开发时,遇到了http400错误,在我的10余年计算机从业生涯中第一次碰到400错误。但我知道和404错误同在一个类别,就是同属4开头的错误,肯定不是语法方面的错误。但具体我也不知道是什么错误,网上bing了一下,400为非法的url访问造成的。结果我就照着这个方面找url的问题了。最后交个底,不是url的问题,而是springmvc在接收前台页面传递的参数时因为jsp页面的参数名和接收对象的要求格式不一致所致。
说的点有空了。举个例子:user对象的接收。
-
{
-
"userid": "zhangsan",
-
"name": "张三",
-
"english_name": "jackzhang",
-
"mobile": "15913215421",
-
"department": [1, 2],
-
"order":[10,40],
-
"position": "产品经理",
-
"gender": "1",
-
"email": "zhangsan@gzdev.com",
-
"isleader": 1,
-
"enable":1,
-
"avatar_mediaid": "2-G6nrLmr5EC3MNb_-zL1dDdzkd0p7cNliYu9V5w7o8K0",
-
"telephone": "020-123456",
-
"extattr": {"attrs":[{"name":"爱好","value":"旅游"},{"name":"卡号","value":"1234567234"}]}
-
}
看第6行 department属性的类型是一个int[]——整形数组。在定义user对象时,department属性也要定义成int[]——整形数组。如果定义成ArrayList<Integer>就不能转换成功。
最后的表现就是报http400错误。
没有研究过springmvc的源码,不知道是什么原因。像这样的错误应该抛一个转换成败的error的。至于为什么会把400.有望研究过springmvc源码的同行给个答案 。
我这里记下来,以备以后有碰到的同行查阅。
另外:纠正前个篇《