grails vaidate()与hasErrors区别

现有一个domain如下
class Book {
String name
Double price
static constraints = {
name(blank:false,unique:true)
price(nullalbe:true)
}
}


可以用validate()来验证domain的一个实例
def book=  new Book()
if(book.validate()) {
// do something with book
}
else {
book.errors.allErrors.each {
println it
}
}

这时vaidate()方法根据Book的constraints 来check,book.validate()返回false,而且默认的在执行save()之前会调用validate()
if(book.save()) {
return book
}
else {
book.errors.allErrors.each {
println it
}
}


看下面的hasErrors代码
def book2 =  new Book(name:'Grails',price:'a')
if(!book2.hasErrors()) {
// do something with book2
}
else {
book2.errors.allErrors.each {
println it
}
}

在这个时候如果你通过hasErrors来check(可能是因为类型转换),如上面double类型price的值为“a”,book2.hasErrors()返回值为true.

我做了一个测试,即
def book3 =  new Book(name:'Grails',price:'a')
if(book3.save()) {
render book3
}
else {
book3.errors.allErrors.each {
println it
}
}

这时虽然price的值为'a',但是book3仍能保存成功,只是保存的price的值为0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值