[英]spring 4 controller @RequestBody parameter
我有以下情况
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;
}
一些参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.