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