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

发布于 2024-10-17 15:27:46 字数 125 浏览 2 评论 0原文

我正在尝试为我的域类中的变量“amount”创建一个自定义验证器,以便新值应比之前的值大 0.50。

例如,假设上一个值为 1.0,下次该值至少应为:[上一个值 + 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 value should be atleast: [previous value + 0.50] or more.

Thanks in advance for the help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凡尘雨 2024-10-24 15:27:46

您可以尝试阅读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}" }) 
  }
}

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}" }) 
  }
}
段念尘 2024-10-24 15:27:46

谢谢 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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文