在我的春季启动应用程序中,我对dto中的一个字段进行了大小验证。现在,根据新的要求,字段大小可以是18或36。早些时候是36,所以我这样做了:
@Size(min=36,max = 36,message = "id length should be 36")
现在,由于我必须针对两种大小进行验证,有没有任何方法可以通过注释本身进行验证?
谢谢,
制作一个自定义验证器Annotation。
在CustomSize.java中
@Target({ FIELD })
@Retention(RUNTIME)
@Constraint(validatedBy = CustomSizeValidator.class)
@Documented
public @interface CustomSize{
String message() default "{CustomSize.invalid}";
Class<?>[] groups() default { };
Class<? extends Payload>[] payload() default { };
}
在CustomSizeValidator.java中
class CustomSizeValidator implements ConstraintValidator<CustomSize, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
try {
if(value.length()==18 || value.length()==36){
return true;
}else{
return false;
}
} catch (Exception e) {
return false;
}
}
}
在你的POJO代码中使用这个。
@CustomSize
private String xyz;
或使用@Pattern
@Pattern(regexp = "^(?:[A-Za-z0-9]{18}|[A-Za-z0-9]{36})$")
有关Pattern,请参阅此处的详细信息->https://stackoverflow.com/a/34311990/1459174