gpt4 book ai didi

validation - Grail 的错误属性从何而来?

转载 作者:行者123 更新时间:2023-12-04 22:14:00 25 4
gpt4 key购买 nike

Grails 有一个关于数据绑定(bind)的错误,当您处理错误的数字输入时,它会引发强制转换异常。吉拉:http://jira.grails.org/browse/GRAILS-6766

为了解决这个问题,我编写了以下代码来手动处理 POGO 类 Foo 上的数字输入位于src/groovy

void setPrice(String priceStr)
{
this.priceString = priceStr

// Remove $ and ,
priceStr = priceStr.trim().replaceAll(java.util.regex.Matcher.quoteReplacement('$'),'').replaceAll(',','')

if (!priceStr.isDouble()) {
errors.reject(
'trade.price.invalidformat',
[priceString] as Object[],
'Price:[{0}] is an invalid price.')

errors.rejectValue(
'price',
'trade.price.invalidformat')
} else {
this.price = priceStr.toDouble();
}
}

以下在 errors.reject() 上引发空引用异常。线。
foo.price = "asdf" // throws null reference on errors.reject()
foo.validate()

但是,我可以说:
foo.validate()
foo.price = "asdf" // no Null exception
foo.hasErrors() // false
foo.validate()
foo.hasErrors() // true
validate() 时错误从何而来叫做?
有没有办法添加 errors无需调用 validate() 的属性(property)第一的?

最佳答案

我不能确切地告诉你原因,但你需要调用 getErrors()显式地访问它而不是作为 errors像一个属性(property)。出于某种原因,Groovy 没有为它调用方法。所以改变reject setPrice() 中的行到

getErrors().reject(
'trade.price.invalidformat',
[priceString] as Object[],
'Price:[{0}] is an invalid price.')

getErrors().rejectValue(
'price',
'trade.price.invalidformat')

这是确保 Errors 的最简单方法对象存在于您的方法中。您可以 check out the code将验证相关的方法添加到您的域类中。

关于validation - Grail 的错误属性从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com