【问题标题】:Jersey Bean validation other than hibernate-validator除了 hibernate-validator 之外的 Jersey Bean 验证
【发布时间】:2017-03-25 05:44:59
【问题描述】:

当我尝试使用 jersey 验证电子邮件 ID 时,内置的 hibernate-validator 没有正确验证它,休闲字符串 lafalsdf@ga 被评估为有效并且它休耕JSR 303 是旧的。我需要根据 JSR 311 和 JSR 339 验证的库。或者任何其他比 hibernate-validator 更好的库

如果有任何图书馆,请建议我。我已经进行了研究,但找不到任何东西。

并且还给我代码在球衣中配置它

【问题讨论】:

    标签: java validation jersey-2.0


    【解决方案1】:

    首先,像 lafalsdf@ga 这样的 emailId 根据 RFC 822 (see here) 是有效的,因为 ga 是有效的本地主机名。由于大多数电子邮件验证器都遵循 RFC 822,因此他们也认为它是有效的。 Hibernate Validator、Java 的原生 InternetAddress.validate() 等就是这种情况。但是,Apache Commons Validator 项目提供了在执行验证时忽略本地地址的选项。

    如果您只关心电子邮件验证,则不必寻找 Hibernate Validator 的替代品。您可以编写使用 Apache 公共验证器的自定义注释和验证器,如下所示。

    @Constraint(validatedBy = CommonsEmailValidator.class)
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
    @Retention(RUNTIME)
    public @interface CommonsEmail {
    String message() default "{org.hibernate.validator.constraints.Email.message}";
    
    Class<?>[] groups() default {};
    
    Class<? extends Payload>[] payload() default {};
    
    /**
     * Defines several {@code @Email} annotations on the same element.
     */
    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
    @Retention(RUNTIME)
    @Documented
    public @interface List {
        CommonsEmail[] value();
    }
    
    public static class CommonsEmailValidator implements ConstraintValidator<CommonsEmail, CharSequence> {
    
        @Override
        public void initialize(CommonsEmail annotation) {
        }
    
        @Override
        public boolean isValid(CharSequence value, ConstraintValidatorContext context) {
            return EmailValidator.getInstance(false).isValid(value.toString());
        }
    
      }
    }
    

    现在,您可以使用新的@CommonsEmail 代替@EmailEmailValidator 是公共验证器库的一部分。因此,请确保 commons-validator.jar 在您的类路径中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2015-12-29
      • 2014-02-08
      相关资源
      最近更新 更多