1

コンマで区切られた電子メールのリストを含む文字列があるため、独自のAnnatotation Constraintを作成したいと考えています。

ここからドキュメントに従います:http://docs.jboss.org/hibernate/validator/4.1/reference/en-US/html/validator-customconstraints.html

私のプロジェクトでは、Bean 検証のプロバイダーとして Hibernate Validator を使用しています。@Emailそして、Hibernate が制約を提供していることに気付きました。

自分の Validator クラスから org.hibernate.validator.constraints.impl.EmailValidator::isValid を呼び出すことは可能ですか?

私は以下とその作品を作りました:

public class EmailsValidator implements ConstraintValidator<Emails, String> {

private EmailValidator emailValidator = new EmailValidator();

@Override
public void initialize(Emails constraintAnnotation) {
}

@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
    System.out.println("EmailsValidator::isValid");
    if (value == null || value.isEmpty()) {
        return true;
    }
    final String[] emails = value.split(",\\s*");
    for (String anEmail : emails) {
        System.out.println("anEmail = " + anEmail);
        if (!emailValidator.isValid(anEmail, context)) {
            return false;
        }
    }
    return true;
}

}

それはそれを作るための最も効率的な方法ですか?

さよなら。

4

1 に答える 1

1

このアプローチは一般的に機能すると思いますが、Hibernate Validator の内部クラスに依存していることに注意してください。これは将来のリリースで変更される可能性があります。確かに、HV 4.3 で別のパッケージに移動されます。または、正規表現を独自のバリデーターにコピーすることもできます。

于 2012-04-12T20:32:44.643 に答える