3

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

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

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

2 回答 2

1

JSF 不是通过Validator#validate 验证完整的 bean ,而是为每个表单字段调用Validator#validateValue。这是一个表单域吗?

于 2013-03-15T09:55:59.747 回答
0

问题是并非所有字段都由 JSF 验证,只有我的 facelet 中的那些。

如果我打电话

SomeObject so = new SomeObject();
Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
        Set<ConstraintViolation<SomeObject>> violations = validator.validate(so);

在测试中,isValid 方法被触发。

于 2013-03-14T14:22:17.560 回答