我使用hibernate-validator-4.2.0的bean验证。Final和JSF 2.1。当我提交页面@NotEmpty, @NotNull
时,…工作正确,但我的方法,用@AssertTrue
注释从未调用。
我将访问修饰符更改为public,并将其重命名为getValid,但该方法从未被调用过。
@AssertTrue(message = "test")
private Boolean isValid() {
return ....;
}
JSF不是通过Validator#validate来验证一个完整的bean,而是为每个表单字段调用Validator#validateValue。这个isValid是一个表单字段吗?
问题是JSF并不验证所有字段,只验证我的facelets中的字段。
如果我调用
SomeObject so = new SomeObject();
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
Set<ConstraintViolation<SomeObject>> violations = validator.validate(so);
在测试中,触发isValid方法