【发布时间】:2013-02-27 01:40:32
【问题描述】:
Grails 在数据绑定方面存在一个错误,即当您处理错误的数字输入时,它会引发强制转换异常。 JIRA:http://jira.grails.org/browse/GRAILS-6766
为了解决这个问题,我编写了以下代码来手动处理位于 src/groovy 的 POGO 类 Foo 上的数字输入
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() 被调用时错误从何而来?
有没有办法在不先调用validate() 的情况下添加errors 属性?
【问题讨论】:
标签: validation grails grails-2.0