@JsonCreator не работает для @RequestParams в Spring MVC - PullRequest
0 голосов
/ 05 февраля 2019

@ 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.

Буду признателен за любые полезные советы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...