我需要映射这样的东西:
JSON:
{'field1': 'value1', 'provider': {'name': 'nameprov', 'country': 'CODE'}}
到Spring MVC控制器:
@ResponseBody
Dummy getVal(@RequestBody MyCriteria criteria) {
事实上,MyCriteria是一个扩展了它的类:
public abstract class MyCriteria {
String field1;
//Getter and setter
Provider provider;
//Getter and setter
}
但是提供商内部有一个枚举:
public class Provider{
String name;
Country country; //Country is an Enum
所以,我创建了一些转换器,但它不起作用。
我将它们添加到网络配置:
@Override
public void addFormatters (FormatterRegistry registry) {
registry.addConverter(new StringToCountryConverter());
registry.addConverter(new StringToProviderConverter());
}
国家/地区的字符串:
public Country convert(String s) {
//It never enters here
}
和String to Provider:
@Override
public Provider convert(String[] s) {
//never here
}
所以我的问题是:我做错了什么?我需要将字符串映射到Country,然后映射到Provider,但是我有这个错误:
Could not read document: Can not construct instance of ...Provider: no suitable constructor found, can not deserialize from Object value...
Provider有这个构造函数:
public Provider(String name, String country)
public Provider(String name, Country country)
任何线索,将不胜感激。谢谢!
答案 0 :(得分:1)
您应该为Provider类创建默认构造函数,例如
public Provider() {}