现有一个domain如下
可以用validate()来验证domain的一个实例
这时vaidate()方法根据Book的constraints 来check,book.validate()返回false,而且默认的在执行save()之前会调用validate()
看下面的hasErrors代码
在这个时候如果你通过hasErrors来check(可能是因为类型转换),如上面double类型price的值为“a”,book2.hasErrors()返回值为true.
我做了一个测试,即
这时虽然price的值为'a',但是book3仍能保存成功,只是保存的price的值为0
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