Java @有效的批注在简单项目中无效
下面是我的简单Java演示代码:Java @有效的批注在简单项目中无效,java,maven,validation,console,Java,Maven,Validation,Console,下面是我的简单Java演示代码: package com.demo; import javax.validation.Valid; import javax.validation.constraints.NotNull; public class App { public static void main(String[] args) { @Valid @NotNull Object x = null; System.out.println("S
package com.demo;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
public class App {
public static void main(String[] args) {
@Valid @NotNull Object x = null;
System.out.println("Shouldn't print this!");
}
}
这是我的Maven配置:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>untitled1</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
</dependencies>
</project>
预期的行为是引发带有验证错误的异常
为什么这个简单的代码不能像预期的那样工作?作为依赖项,您可以使用一个实现,比如
hibernate validator
,它可以传递地提取验证api
在JavaSE环境中,还需要EL实现
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version></version>
</dependency>
更多信息:注释本身不起任何作用。每个注释都需要某种类型的处理器来处理注释(您可以将注释视为提示)。在这里,您需要一个验证处理器使其工作。看看
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version></version>
</dependency>
public class ValidationExample {
@NotNull
private Object name;
public static void main(String[] args) {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<ValidationExample>> violations = validator.validate(new ValidationExample());
for (ConstraintViolation<ValidationExample> violation : violations) {
System.out.println(violation.getMessage());
}
}
}
INFO: HV000001: Hibernate Validator 6.1.6.Final
must not be null