【问题标题】:@AssertTrue Method not called when submitting JSF page@AssertTrue 提交 JSF 页面时未调用方法
【发布时间】:2013-03-14 11:00:04
【问题描述】:

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

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

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

【问题讨论】:

    标签: java jsf assert bean-validation


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      问题在于,并非所有字段都经过 JSF 验证,只有我的 facelet 中的字段。

      如果我打电话

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-06
        • 2018-06-08
        • 2012-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-17
        • 1970-01-01
        相关资源
        最近更新 更多