@ JsonCreator не десериализует @RequestParam типа enum
Я работаю над приложением Spring, где контроллер получает список параметров запроса, которые Spring связывает с объектом-оболочкой.Один из параметров имеет тип enum, где я получаю его по некоторому имени свойства.
Endpoint example: http://localhost:8080/searchCustomers?lastName=Smith&country=Netherlands
@RequestMapping(value = "/search/customers", method = RequestMethod.GET)
public CustomerList searchCustomers(@Valid CustomerSearchCriteria searchCriteria)
public class CustomerSearchCriteria {
private String lastName;
private Country country;
}
public enum Country {
GB("United Kingdom"),
NL("Netherlands")
private String countryName;
Country(String countryName) {
countryName = countryName;
}
@JsonCreator
public static Country fromCountryName(String countryName) {
for(Country country : Country.values()) {
if(country.getCountryName().equalsIgnoreCase(countryName)) {
return country;
}
}
return null;
}
@JsonValue
public String toCountryName() {
return countryName;
}
}
Я ожидаю, что Spring свяжет enum Country.Net Netherlands с CustomerSearchCriteria.country, но это не так.Я пробовал аналогичные аннотации с @RequestBody, и это прекрасно работает, поэтому я предполагаю, что привязка Spring игнорирует @ JsonCreator.
Буду признателен за любые полезные советы.