Grails:基于字段的先前值的自定义验证器

时间:2011-02-15 15:53:16

标签: grails custom-validators

我正在尝试在我的域类中为变量'amount'创建一个自定义验证器,这样新值应该大于之前的0.50。

例如,假设前一个值为1.0,下次该值应为至少:[之前的值+ 0.50]或更多。

提前感谢您的帮助

2 个答案:

答案 0 :(得分:4)

您可以尝试阅读domainEntity.getPersistentValue('amount')

编辑: ...在自定义验证程序中,例如:

class Bid { 
  Double amount 
  ...
  static constraints = { amount(validator: { double a, Bid b -> 
    def oldValue = b.getPersistentValue('amount')
    a > oldValue + 0.5 ? true : "Amount $a should be at least ${oldValue  + 0.5}" }) 
  }
}

答案 1 :(得分:0)

Thx Victor Sergienko,但我对你的代码做了一些修改

class Bid { 
  Double amount 
  ...
  static constraints = { amount(validator: { double a, Bid b -> 
    Bid tempBid = Bid.get(b.id)
    def oldValue = tempBid.getPersistentValue('amount')
    a > oldValue + 0.5 ? true : "Amount $a should be at least ${oldValue  + 0.5}" }) 
  }
}

区别在于这一行:

Bid tempBid = Bid.get(b.id)
def oldValue = tempBid.getPersistentValue('amount')

我不知道为什么b.getPersistentValue('amount')总是返回null值,我的grails版本是2.4.3