作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Bean Validation 2.0 (JSR 380) 应该能够执行以下验证:
@Valid
public class MyBean{
private List<@NotNull String> members;
}
但是好像只是忽略了@NotNull注解。另外,@NotBlank
和 @NotEmpty
注释被忽略。
我通过 Maven 在我的类路径中有 Bean Validation 2.0 API 和引用实现:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.15.Final</version>
</dependency>
我将 Java 8 和 Tomcat 8 与 Jersey 一起使用。
我需要配置吗 Tomcat
以某种方式使用 2.0 实现而不是 JDK 8 中捆绑的默认实现(比如在 Optional<>
中启用 Jackson
支持)?
最佳答案
问题的原因是 Jersey 的 Bean 验证扩展隐式地带来了旧版本的 Hibernate validator ,而我在 pom.xml 中明确请求的 Hibernate validator 没有被使用。
为了解决它,我排除了 Jersey 隐式提取的 hibernate validator :
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-bean-validation</artifactId>
<version>2.27</version>
<exclusions>
<exclusion>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
</exclusions>
</dependency>
添加我的 Bean Validation 版本
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.15.Final</version>
</dependency>
并添加了 Java EL:
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.1-b09</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
<scope>test</scope>
</dependency>
关于java - 如何在 Tomcat 8 中使用 Bean Validation 2.0 (JSR 380) 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55121582/
我是一名优秀的程序员,十分优秀!