如何为字段应用大小注释,该字段可以是两种大小中的任何一种



在我的春季启动应用程序中,我对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

相关内容

  • 没有找到相关文章

最新更新