【发布时间】:2026-01-25 02:10:01
【问题描述】:
我有一个类层次结构。在它的顶部有一个抽象的 AnswerUnit 类。有两个继承类:OpenQuestionAnswer 和 MultipleChoiceQuestionAnswer。
我有一个 .jsp 表单,它通过 AJAX 请求和控制器中的方法将数据(序列化为 JSON 的对象)发送到服务器。
@RequestMapping(value = "/test", method = RequestMethod.POST)
public @ResponseBody
String testPostMethod(@RequestBody
OpenQuestionAnswer answer) {
return "home";
}
我希望能够将“AnswerUnit answer”作为参数(抽象类型而不是具体类型,因此我可以使用一种方法处理来自不同视图的请求)。当我尝试这样做时出现问题 - 服务器响应是
400 BAD REQUEST he request sent by the client was syntactically incorrect.
我认为原因是 Spring(Jackson?)无法找出他应该创建和使用哪个具体类。 在客户端,我知道我发送到服务器的类类型。 告诉服务器应该创建哪个具体类并用我的请求填充的正确方法是什么?
【问题讨论】:
-
在您的示例中,您显示了一个具体类型 -
OpenQuestionAnswer,即使使用具体类型,您是否也会收到此错误?您可以尝试将日志级别降低到 DEBUG 并查看是否出现其他任何内容 -
似乎很明显,但是您是否在 JSON POST 中引用了具体类的方法(不能假设没有看到代码)?您可能不得不放弃继承而改用组合 (*.com/questions/2399544/…)