提交JSF页面时未调用@AssertTrue方法

时间:2013-03-14 11:00:05

标签: java jsf assert bean-validation

我正在使用hibernate-validator-4.2.0.Final和JSF 2.1进行bean验证。当我提交页面@NotEmpty, @NotNull时,..工作正常,但我的方法,用@AssertTrue注释永远不会被调用。

我将访问修饰符更改为public,将其重命名为getValid,但从不调用该方法。

@AssertTrue(message = "test")
    private Boolean isValid() {
        return ....;
    }

2 个答案:

答案 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方法。