需要有两个属性约束的建议

时间:2014-07-28 20:04:41

标签: grails

在这种情况下,我需要你的帮助 我有以下域类:

class Payment {
    BigDecimal cash
    BigDecimal checkValue

    static constraints = {
        cash nullable: true
        checkValue nullable: true
    }
}

cashcheckValue属性可以为空,但至少其中一个必须有值。

我希望我能够解释我的问题。

谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

在这种情况下,自定义验证器似乎是一个不错的选择。试试:

class Payment {
    BigDecimal cash
    BigDecimal checkValue

    static constraints = {
        cash nullable: true, validator: { val, obj -> 
            val != null || obj.checkValue != null 
        }
        checkValue nullable: true, validator: { val, obj -> 
            val != null || obj.cash != null 
        }
    }
}

使用groovy truth,您可以将验证器闭包简化为以下内容:

static constraints = {
        cash nullable: true, validator: { val, obj -> val || obj.checkValue }
        checkValue nullable: true, validator: { val, obj -> val || obj.cash }
}

有关详细信息,请查看Grails文档的Validation部分。