Задать вопрос
@TonyDevel

Почему Spring не использует Jackson для параметра в эндпоинте?

Добрый день.
Имеется контроллер, у эндпоинта в этом контроллере есть запрашиваемый параметр, который является Enum, ниже пример:
@RequestMapping("/")
public void foo(@RequestParam(value="enum") Enum enum) {
//some logic
}

Сам код енама:
public enum Enum {
        ONE, TWO;

    @JsonCreator
    public static Enum safeValueOf(String value) {
        return Stream.of(Enum.values())
                .filter(i -> i.name().equals(value))
                .findAny()
                .orElse(null);
    }
}

Проблема следующая: когда я передаю в качестве параметра значение, которого нет в енаме, спринг кидает Exception MethodArgumentTypeMismatchException, т.к он использует StringToEnumConverter, который явно вызывает Enum.valueOf(value).
Как заставить Спринг использовать Jackson, а не свой конвертор?
  • Вопрос задан
  • 162 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
jaxtr
@jaxtr
JavaEE/Spring-разработчик
Зачем для этого использовать Jackson?
Если уж на то пошло, то гораздо логичнее будет написать реализацию org.springframework.core.convert.converter.Converter, которая будет приводить строку к нужному значению.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы