在验证对象时,我使用HibernateValidator6.0.9.final遇到了一些奇怪的行为。给定以下POJO:
public class Log {
private Long uid;
@javax.validation.constraints.NotEmpty
@javax.validation.constraints.NotNull
private String value;
private long reference;
private String type;
private String createdDt;
private String createdBy;
private Boolean actioned;
private Long dxr;
// Constructors..
// Getters and setters...
// Equals and hashcode overrides...
}
现在,如果我使用一个新的实例junit测试验证实体,我将得到以下输出:
@Test
public void test() {
Log cLog = new Log();
ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();
Validator beanvalidator = validatorFactory.getValidator();
Set<ConstraintViolation<CommunicationLog>> constraintViolations = beanvalidator.validate(cLog);
System.out.println(constraintViolations);
}
[ConstraintViolationImpl{interpolatedMessage='must not be null', propertyPath=value, rootBeanClass=class Log, messageTemplate='{javax.validation.constraints.NotNull.message}'},
ConstraintViolationImpl{interpolatedMessage='must not be empty', propertyPath=value, rootBeanClass=class Log, messageTemplate='{javax.validation.constraints.NotEmpty.message}'}]
这很好。但是,如果我运行这个
相同的代码
在hibernate/jersey项目中,只有
@NotNull
验证运行。我好像拿不到
@NotEmpty
要在对象上运行的验证程序。
我试过把
@不为空
验证器(作为
@不空
验证器会处理它),但我为了完整性而保留它,以证明
@不空
验证器没有返回上面图像中的任何内容。
我不明白为什么它在部署到web项目时不运行,但在junit测试下运行时运行良好。有什么我遗漏的吗?