我正在使用 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 Status 400: The request sent by the client was syntactically incorrect.
我注意到,当提交的 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
如 List<Object> object
,因此它无法理解如何解析它。
解决它的方法之一,您可以通过为列表创建包装类来捕获类型信息,如下所示:
public class CustomClassList extends ArrayList<CustomClass> {
}
关于rest - Spring MVC REST 使用 @RequestBody List<?> 返回 HTTP 400 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558491/