9

对于非常简单的配置类,我不断收到验证器错误

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotBlank;

@Component
@Data
@Validated
@ConfigurationProperties(prefix = "test")
public class TestProperties {
    @NotBlank
    String uri;
}

错误是自我解释:

javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.String'. Check configuration for 'uri'

但是根据spring boot文档,这应该可以。

4

6 回答 6

8

我有同样的问题并解决了它。

正如 Yogi 在他的回答中所说,有两种实现方式:

import javax.validation.constraints.NotBlank;

import org.hibernate.validator.constraints.NotBlank;

javax从实施切换到实施hibernate解决了这个问题。

由于我没有使用 Spring boot,所以我不得不在我的 pom.xml 中添加:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.2.4.Final</version>
</dependency>
于 2018-10-09T07:56:08.920 回答
5

根据 Spring-Boot 文档和 Maven 中央仓库:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

包含验证器。如果您的依赖项中没有包含 spring-boot-starter-web ,则只需添加验证器:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>
于 2018-01-19T12:29:25.807 回答
3

我在这个论坛之外看到了一个类似的问题,发现每当您尝试@NotBlank在任何非字符串类型字段上添加注释时都会出现错误。就我而言,javax.validation.UnexpectedTypeException当我用@NotBlank. 所以我导入javax.validation.constraints.NotNull,将 Byte 字段上的注释更改为@NotNull,错误消失了。

我以前尝试用替换import javax.validation.constraints.NotBlank;import org.hibernate.validator.constraints.NotBlank;杀死错误,但我收到了弃用警告。不鼓励程序员使用已弃用的程序元素,因此我建议您改用@NotNull注解。

要了解 和 之间的区别@NotBlank@NotNull请参阅此StackOverflow 线程。这样,您就可以决定是否@NotNull适合您的用例。

于 2018-10-17T12:41:57.443 回答
0

在我的情况下,它在作为独立应用程序运行时运行良好,但在作为 WAR 运行时给出了同样的错误;为了使其工作,有必要显式地将 hibernate-validator 作为依赖项导入,以使其在作为 WAR 运行时工作:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>7.0.2.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator-annotation-processor</artifactId>
</dependency>
于 2022-03-02T20:00:04.910 回答
-1

您可以使用以下选项,它们适用于 Spring JPA:

  1. org.hibernate.validator.constraints。非空白
  2. javax.validation.constraints。非空
于 2018-01-19T12:11:06.980 回答
-3

我一直使用@NotNull。

我认为相应的POM代码是

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>

于 2018-01-19T13:47:19.587 回答