(Честно говоря, я написал этот код здесь, не тестируя его, может быть, вам нужно немного его изменить)
Вы можете попробовать сделать что-то вроде следующего (Enum
с конструктором и использовать @JsonCreator
):
public enum SomeEnum {
EXISTS("exists"),
NONE(null);
private String value;
SomeEnum (String value) {
this.value = value;
}
@JsonCreator
public static SomeEnum fromValue(String value) {
for (SomeEnum someEnum : SomeEnum.values()) {
if (StringUtils.equalsIgnoreCase(someEnum.getValue(), value)) {
return someEnum;
}
}
throw new IllegalArgumentException("Unknown value " + value);
}
public String getValue () {
return value;
}
}
Если это не сработает, сохраните приведенное выше перечисление и попробуйте сделать пользовательский конвертер (без Джексона) следующим образом
При использовании пружинной загрузки Вам следует положить это связующее в вашем контроллере
@InitBinder
public void initBinder(final WebDataBinder webdataBinder) {
webdataBinder.registerCustomEditor(SomeEnum.class, new SomeEnumConverter());
}
Ниже приведен пользовательский конвертер для указания способа преобразования входного значения в значение перечисления.
public class SomeEnumConverter extends PropertyEditorSupport {
@Override
public void setAsText(final String text) {
setValue(SomeEnum.fromValue(text));
}
}