我有以下情况
public class MyCustomForm {
private MyCustomType a;
private MyCustomType b;
}
@RestController
public class AController {
@RequestMapping(...)
public void myMethod(@RequestBody MyCustomForm form){
...
}
}
我想在 POST
请求中发送必要的数据来填写表格。问题是 MyCustomType
是一种复杂的数据类型,无法从 JSON 反序列化。
我尝试的第一件事是编写一个 PropertyEditor
,以便 Spring 知道如何从字符串进行反序列化。如果我在 @RequestBody
之外使用其他任何东西,这个解决方案就有效(例如,它与 @PathVariable
一起使用)。
我做了一些研究,@RequestBody
不工作的原因是因为这个注解生成了一个使用它自己的反序列化规则的代理。这些规则不会干扰自定义 PropertyEditor
。
接下来我尝试的是使用自定义 Converter
。此方案仍未解决问题。
还有其他想法吗?
我知道最新版本的 jackson(第 2 版)会知道自定义 Converter
或 PropertyEditor
但更新我的 jackson 映射器并不是真正的解决方案我的情况。
最佳答案
您可以使用 @JsonDeserialize
对于你的 MyCustomType
类
public class MyCustomForm {
@JsonDeserialize(using = MyCustomTypeDeserializer.class)
private MyCustomType a;
@JsonDeserialize(using = MyCustomTypeDeserializer.class)
private MyCustomType b;
}
一些引用资料:
关于java - spring 4 Controller @RequestBody参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35041953/