[英]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.