Добрый день.
Имеется контроллер, у эндпоинта в этом контроллере есть запрашиваемый параметр, который является 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, а не свой конвертор?