如何将javax.validation导入到我的Java SE项目中?

21 浏览
0 Comments

如何将javax.validation导入到我的Java SE项目中?

我正在尝试添加约束检查,具体描述请参考如何在EclipseLink/JPA中指定@OneToMany的基数

0
0 Comments

如何将javax.validation导入到我的Java SE项目中?

问题的原因:需要在Java SE项目中使用javax.validation进行验证,但不清楚如何导入。

解决方法:可以选择使用除Hibernate之外的其他解决方案,比如Bval。以下是使用Bval的解决方法:

1. 在Maven中添加以下依赖项:


    javax.validation
    validation-api
    2.0.1.Final


    org.apache.bval
    bval-jsr
    2.0.2

2. 创建一个静态的validator:

import javax.validation.Validation;
import javax.validation.Validator;
import org.apache.bval.jsr.ApacheValidationProvider;
private static final Validator validator;
static {
    validator = Validation.byProvider(ApacheValidationProvider.class).configure().buildValidatorFactory().getValidator();
}

这样就可以使用javax.validation进行验证了。

优缺点:Bval并不是很流行,但你可能会喜欢它。

0
0 Comments

问题的出现原因:需要在Java SE项目中导入javax.validation包。

解决方法:

1. 在Maven项目中,可以通过添加以下依赖来导入javax.validation包:


    org.hibernate.validator
    hibernate-validator
    6.0.16.Final

这个依赖会自动引入Bean Validation API的依赖,所以不需要再单独导入validation-api的依赖。

2. 如果需要额外的功能,如Expression Language和CDI支持,可以添加以下依赖:


    org.glassfish
    javax.el
    3.0.1-b09


    org.hibernate.validator
    hibernate-validator-cdi
    6.0.16.Final

以上所有依赖都可以在Maven Central Repository中找到,所以不需要添加JBoss Repository。

另外,示例中给出了一个方便的方法:

public static  void validate(T object) throws MigrationException {
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    Set> valRes = validator.validate(object);
    if (!valRes.isEmpty()) {
        StringBuilder sb = new StringBuilder("Validation failed for: ");
        if (object instanceof Origin.Wise)
            sb.append(((Origin.Wise) object).getOrigin());
        else
            sb.append(object);
        for (ConstraintViolation fail : valRes) {
            sb.append("\n  ").append(fail.getMessage());
        }
        throw new IllegalArgumentException(sb.toString());
    }
}

在2013年的版本中,依赖的版本如下:



    org.hibernate
    hibernate-validator
    5.4.0.Final


    org.glassfish
    javax.el
    3.0.1-b08


    org.hibernate
    hibernate-validator-cdi
    5.4.0.Final

需要注意的是,提供的URL链接已损坏。

0
0 Comments

在Java SE项目中如何导入javax.validation的问题是因为该用户在使用Maven时遇到了依赖问题。解决方法是添加所需的依赖项。

该用户在Maven中使用了以下依赖项:


  
  
    javax.validation
    validation-api
    1.0.0.GA
  
  
    org.hibernate
    hibernate-validator
    4.0.2.GA
  

该用户可以从以下存储库获取这些依赖项:


  
    jboss
    JBoss repository
    https://repository.jboss.org/maven2
  

用户还可以查看其他答案以获取最新的Bean Validation 1.1版本更新。

整体而言,用户遇到了无法导入javax.validation依赖项的问题,解决方法是在Maven配置文件中添加正确的依赖项和存储库。

0