类型为String的@NotBlank验证器

时间:2018-01-19 11:56:41

标签: spring-boot

我一直在为非常简单的配置类

获取验证器错误
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文档,这应该可行。

5 个答案:

答案 0 :(得分:4)

我遇到了同样的问题并解决了。

如瑜伽士在他的回答中所述,有两种实现方式:

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>

答案 1 :(得分:1)

根据Spring-Boot文档和maven central repo:

<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>

答案 2 :(得分:0)

您可以使用以下选项,这些选项适用于Spring JPA:

  1. org.hibernate.validator.constraints。的 NotBlank
  2. javax.validation.constraints。的 NOTNULL

答案 3 :(得分:0)

我在该论坛外看到一个similar question,发现只要您尝试在任何非字符串类型字段上放置@NotBlank批注,就会出现错误。就我而言,当我用javax.validation.UnexpectedTypeException注释Byte类型的字段时,出现@NotBlank。因此,我导入了javax.validation.constraints.NotNull,将“字节”字段上的注释更改为@NotNull,错误消失了。

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

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

答案 4 :(得分:-3)

我一直使用@NotNull。

我认为相应的POM代码是

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