Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaEE6bean验证_Java_Jakarta Ee_Java Ee 6_Bean Validation - Fatal编程技术网

使用JavaEE6bean验证

使用JavaEE6bean验证,java,jakarta-ee,java-ee-6,bean-validation,Java,Jakarta Ee,Java Ee 6,Bean Validation,我正在尝试使用这里指定的JavaEE6验证 我已经注释了一个简单的字段 @Max(11) @Min(3) private int numAllowed; 文档中说“对于内置约束,默认实现是可用的”,但我如何指定这一点。我的约束检查没有生效。我希望它能够为字段调用setter方法。我班上唯一重要的是 import javax.validation.constraints.Max; import javax.validation.constraints.Min; 如何/在何处指定实现? 我将约

我正在尝试使用这里指定的JavaEE6验证

我已经注释了一个简单的字段

@Max(11)
@Min(3)
private int numAllowed;
文档中说“对于内置约束,默认实现是可用的”,但我如何指定这一点。我的约束检查没有生效。我希望它能够为字段调用setter方法。我班上唯一重要的是

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
如何/在何处指定实现?
我将约束放在简单POJO中的一个字段上,而不是@Entity类,这样可以吗?

仅将约束注释放在字段上不会导致其计算。相反,某些机制必须通过
javax.validation.Validator
API触发验证;这是透明的,例如对于JPA实体、绑定到JSF输入元素的属性或JavaEE7中CDIBeans的受约束方法。如果要验证未管理的POJO,您必须自己调用验证器。

您对注释的使用很好。每一个都有一个验证器实现

但是,在某个时候,您需要触发此POJO的验证。如果它是一个
@实体
,那么触发验证的将是您的JPA提供商,在您的情况下,您需要自己进行验证

有一个是JSR-303的参考实现

示例

public class Car {
    @NotNull
    @Valid
    private List<Person> passengers = new ArrayList<Person>();
}
您可能还想阅读(JPA、CDI等)

Car car = new Car( null, true );

ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Car>> constraintViolations = validator.validate( car );

assertEquals( 1, constraintViolations.size() );
assertEquals( "may not be null", constraintViolations.iterator().next().getMessage() );