仅在传递其他约束时才验证自定义约束

Validate custom constraint only if other constraint is passed

我有一个基本的自定义验证设置,如下所示:

@NotNullOrEmpty(message="{err.msg.required}", fieldName="Email")
@ValidEmail(message="{err.msg.validEmail}", fieldName="Email")
private String email;

但是,如果电子邮件为空,则两者都会触发,因为空电子邮件当然不是有效电子邮件。

如何在空时只触发 @NotNullOrEmpty,在非空时只触发 @ValidEmail

或者可以点赞

@Annotation1
@Annotation2 //trigger only if value has passed @Annotation1

我的想法是如果电子邮件为空,则将我的 ValidEmailValidator.isValid() 编辑为 return true,但是如果我想在将来验证空电子邮件怎么办?

由所有标准注释实现的标准方法是,如果电子邮件为 null 或为空,则将其视为有效。因此,如果您有必填的电子邮件,则可以使用 NotEmpty 和 Email 对该字段进行注释。如果您有不需要的电子邮件,您只需使用电子邮件对其进行注释。

作为参考,这里是标准 EmailValidator 的第一行代码:

if ( value == null || value.length() == 0 ) {
    return true;
}