如何将javax.validation导入Java SE项目?

时间:2010-04-25 08:52:33

标签: jpa java-ee eclipselink hibernate-validator bean-validation

我正在尝试添加约束检查,如How to specify the cardinality of a @OneToMany in EclipseLink/JPA

所述

3 个答案:

答案 0 :(得分:15)

以下是我正在使用的依赖项(使用Maven):

<dependencies>
  <!-- Bean Validation API and RI -->
  <dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.0.0.GA</version>
  </dependency>
  <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.0.2.GA</version>
  </dependency>
</dependencies>

您可以从此存储库获取:

<repositories>
  <repository>
    <id>jboss</id>
    <name>JBoss repository</name>
    <url>http://repository.jboss.org/maven2</url>
  </repository>
</repositories>

答案 1 :(得分:12)

截至2019年的依赖关系:

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.0.16.Final</version>
</dependency>

这可以将依赖性转移到Bean Validation API,因此您不再需要这样做了:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

对于其他功能,表达式语言和CDI支持,您可能需要添加:

<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>javax.el</artifactId>
    <version>3.0.1-b09</version>
</dependency>

<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-cdi</artifactId>
    <version>6.0.16.Final</version>
</dependency>

来源:Hibernate Validator documentation

这些都在Maven Central Repo中,因此您无需添加JBoss仓库。

BTW这是我的示例便捷方法:

public static <T extends Object> void  validate( T object ) throws MigrationException
{
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    Set<ConstraintViolation<T>> 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<T> fail : valRes)
        {
            sb.append("\n  ").append( fail.getMessage() );
        }
        throw new IllegalArgumentException( sb.toString() );
    }
}

Origin.Wise类似于JAXB的@XmlLocation Locator


2013年(原帖)版本为:

    <!-- BeanValidation and Hibernate Validator. -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.0.Final</version>
    </dependency>        
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.el</artifactId>
        <version>3.0.1-b08</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator-cdi</artifactId>
        <version>5.4.0.Final</version>
    </dependency>

答案 2 :(得分:0)

from string import ascii_uppercase import os import errno import itertools try: for name in next(os.walk("./Test/"))[1]: summ = len(next(os.walk("./Test/"+name))[2]) os.chdir('./.__temp__/') alpha= [(c) for c in ascii_uppercase] for filename in os.listdir(): print(filename) src = filename dst = str(summ+1)+'.jpg' for name in alpha: os.rename(src,name+'-'+dst) except OSError as e: pass

以外的替代解决方案

概述

Hibernate是遵循javax.validation (validation-api)的验证规则。验证规则需要JSR 380 Java Bean Validation Specification才能根据验证规则执行验证。

并且有各种验证器,例如validator(最受欢迎的验证器),hibernate等。

Bval

Bval是一种替代解决方案,我认为除了Bval之外,它还很酷。在这里,您可以遵循我的替代解决方案:

MVN

Hibernate

实施

创建静态验证器

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.apache.bval</groupId>
            <artifactId>bval-jsr</artifactId>
            <version>2.0.2</version>
        </dependency>

你去!!!!。
同样,验证器只是一个验证器,您可以在其中轻松切换到其他验证器。

Pro&Con

它不那么受欢迎,但是您会喜欢它的。