这是我的情况,
我有一个Enum
类型字段的课程。我想对enum
类型执行带注释的验证,类似于字符串的注释,例如:@Size
,@NotNull
等。
问题是,json
反序列化器在验证发生之前在enum
类型上失败。
public class myClass {
@JsonProperty
//@SomeCustomValidator -- ??
private EnumType enumValue;
}
public enum EnumType {
A,
B,
C
}
少数事情:
String
。 尝试了以下主题中的步骤,没有解决我的问题。
Tried this link, but get an error in deserialization before validation hits
答案 0 :(得分:0)
验证在解析参数类型后起作用。所以我没有看到如何在枚举上使用String验证注释的方法。作为解决方法,您可以使用@JsonCreator并在创建对象之前进行一些验证。
public enum EnumType {
A,
B,
C;
@JsonCreator
public static EnumType from(String s) {
// add your logic here, for example
/*
if (Stream.of(values()).map(Enum::name).noneMatch(name -> name.equals(s))) {
throw new MyServiceException("Bad value " + s);
}
*/
return valueOf(s);
}
}