【问题标题】:No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.String'找不到约束“javax.validation.constraints.NotBlank”验证类型“java.lang.String”的验证器
【发布时间】:2019-03-23 12:22:13
【问题描述】:

我正在使用 Hibernate 验证器来验证我的 bean。

其实我的 POM 有这个依赖

    <!-- Hibernate validator - Bean validation API Implementation -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>6.0.11.Final</version>
    </dependency>

    <!-- Verify validation annotations usage at compile time -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator-annotation-processor</artifactId>
        <version>6.0.11.Final</version>
    </dependency>

    <!-- Unified Expression Language - Spec -->
    <dependency>
        <groupId>javax.el</groupId>
        <artifactId>javax.el-api</artifactId>
        <version>3.0.1-b06</version>
    </dependency>

    <!-- Unified Expression Language - Implementation -->
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>javax.el</artifactId>
        <version>2.2.6</version>
    </dependency>

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

这是我的豆子

import org.hibernate.annotations.ColumnDefault;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;

public class Casa {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Integer id;

    @Column(name="nomcaac") @NotBlank(message = "{casa.nomcaac.null}") @Size(min = 0, max = 300, message = "{casa.nomcaac.size}")
    private String nomcaac;

现在问题来了,当我尝试验证我的 bean 时,我收到了这个错误消息

找不到约束的验证器 'javax.validation.constraints.NotBlank' 验证类型 'java.lang.String'。检查“nomcaac”的配置

我无法弄清楚我的问题是什么,我认为根据这个page,我有正确的依赖关系。

【问题讨论】:

  • 看看their website。 Hibernate Validator 的groupId 是org.hibernate.validator,而不是org.hibernate。
  • 这不是什么大问题,反正我们要搬家了。

标签: java hibernate validation hibernate-validator javax.validation


【解决方案1】:

@NotBlank 在 Bean Validation 2.0 中是新的,所以我怀疑你的类路径中有一个旧的 Hibernate Validator 版本(例如 5.x)。

您应该使用 mvn dependency:tree 检查您的依赖关系树(以及您的 web 应用程序寻找旧 jar)。

顺便说一句,您的 javax.el 依赖项不正确:请参阅https://github.com/hibernate/hibernate-validator/#using-hibernate-validator 以获得正确的依赖项。

【讨论】:

  • 谢谢,我也有同样的问题,只需更新 Hibernate Validator 6.x 版即可
猜你喜欢
  • 1970-01-01
  • 2019-03-07
  • 2021-02-04
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
相关资源
最近更新 更多