使用自定义验证程序

时间:2015-11-09 21:42:57

标签: grails gorm grails-validation

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

如果model_type.has_range_options为false,我想确保种群和产品字段组合是唯一的。我尝试过以下但是没有用:

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

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

2 个答案:

答案 0 :(得分:0)

我最后编写了自己独特的验证:

    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")
        }
    }

答案 1 :(得分:0)

这是一个有趣的问题。在过去,我曾使用我想要使用的内置约束编写我自己的版本。

我还没有能够通过唯一约束来弄清楚如何做到这一点,因为它似乎作为持久约束有点不同。但是,对于大多数约束,您可以使用它们,例如:

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)
    }
}