Grails有关于数据绑定的错误,因为当你处理错误的数字输入时它会抛出一个强制转换异常.JIRA:http://jira.grails.org/browse/GRAILS-6766
为了解决这个问题,我编写了以下代码来手动处理Foo位于的POGO类的数字输入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();
}
}
Run Code Online (Sandbox Code Playgroud)
以下命令会在该errors.reject()行上引发空引用异常.
foo.price = "asdf" // throws null reference on errors.reject()
foo.validate()
Run Code Online (Sandbox Code Playgroud)
但是,我可以说:
foo.validate()
foo.price = "asdf" // no Null exception
foo.hasErrors() // false
foo.validate()
foo.hasErrors() // true
Run Code Online (Sandbox Code Playgroud)
validate()调用时错误从何而来?有没有办法在errors不 …