我一直在为非常简单的配置类
获取验证器错误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文档,这应该可行。
答案 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:
答案 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>