开发者

Grails: Custom validator based on a previous value of the field

开发者 https://www.devze.com 2023-02-10 09:49 出处:网络
I am trying to create a custom validator for variable \'amount\' in my domain class, such that the new value should be greater than previous by 0.50.

I am trying to create a custom validator for variable 'amount' in my domain class, such that the new value should be greater than previous by 0.50.

For example, lets say the previous value was 1.0, next time the va开发者_运维百科lue should be atleast: [previous value + 0.50] or more.

Thanks in advance for the help


You can try reading domainEntity.getPersistentValue('amount').

EDIT: ... in custom validator, like:

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


Thx Victor Sergienko, but I do a little modification on your code

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

The difference is at this line :

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

I don't why b.getPersistentValue('amount') is always return null value, my grails version is 2.4.3

0

精彩评论

暂无评论...
验证码 换一张
取 消