Grails 有一个关于数据绑定的错误,当您处理错误的数字输入时,它会引发强制转换异常。JIRA: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()
?