在自定义验证器中使用标准验证器进行Grails验证



我想在自定义验证器中使用标准验证器。

仅当model_type.has_range_options为false时,我希望确保总体和产品字段组合是唯一的。我尝试了以下方法,但不起作用:

static constraints = {
    client validator: {val, obj, errors ->
        if (!obj.model_type?.has_range_options?.booleanValue()) {
            unique: ['population', 'product'] 
        }
    }
}

还有什么我可以试试的吗?

我刚刚编写了自己的唯一验证:

    static constraints = {
            client validator: {val, obj, errors ->
        if (this.findByPopulationAndClient(obj.population, obj.client) && !obj.model_type?.has_range_options?.booleanValue()) {
            errors.rejectValue('client', 'unique', "Population and Client must be unique")
        }
    }

这是一个有趣的问题。在过去,我曾求助于编写我自己版本的内置约束,我想像您一样使用它。

我还不知道如何使用唯一约束来实现这一点,因为作为一个持久约束,它的工作方式似乎有点不同。然而,对于大多数约束,您可以像这个空白约束一样使用它们,例如:

static constraints = {
    client validator: { val, obj, errors ->
        def constraint = new org.grails.validation.BlankConstraint(propertyName: 'client', parameter: true, owningClass: this)
        constraint.validate(obj, val, errors)
    }
}

相关内容

  • 没有找到相关文章

最新更新