我正在使用 Spring 4 + Jackson 2,并在自定义类上使用 @RequestBody 编写了一个功能齐全的 POST 方法。此方法在解组对象时没有任何问题。
@ResponseBody
@RequestMapping(value="store", method = RequestMethod.POST)
public ServiceResponse store(@RequestBody CustomClass list) {
...
}
// Request: { code: "A", amount: 200 }
当我尝试添加另一种方法来处理同一类的集合时,我的 POST 请求返回并出现以下错误。
HTTP 状态 400:客户端发送的请求在语法上不正确。
我注意到,当提交的 JSON 与实体类不匹配时,通常会发生此错误。然而,我所做的只是提交同一对象的数组而不是对象本身,这已经被证明是有效的。
@ResponseBody
@RequestMapping(value="store-bulk", method = RequestMethod.POST)
public ServiceResponse storeBulk(@RequestBody List<CustomClass> list) {
...
}
// Request: [{ code: "A", amount: 200 }, { code: "B", amount: 400 }]
我在这里错过了什么吗?
在 Java 中,泛型的类型信息会在运行时被删除,因此 Spring 会看到您的List<CustomClass> object
as List<Object> object
,因此它无法理解如何解析它。
解决这个问题的方法之一是,您可以通过为列表创建包装类来捕获类型信息,如下所示:
public class CustomClassList extends ArrayList<CustomClass> {
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)