grails 3 中的自定义验证器名称
Custom validator name in grails 3
我正在将一个大项目从 grails 2.5.4 迁移到 3.3.10。一切进展顺利,但我的领域对象出现了一个主要问题。我以前用这种方式编写我的自定义验证器:
class Person {
String name
static constraints = {
name: nullable: false, validator: validateName
}
static validateName = {
// validation code
}
}
Grails 抛出以下异常
No such property: validatorTest for class: org.grails.orm.hibernate.cfg.HibernateMappingBuilder
在 grails 3.x 中,这种定义验证器的方式似乎已被破坏。我知道文档说要这样使用:
name nullable: false, validator: { // code }
但在那种情况下需要重写很多代码。
有没有办法使用旧方法定义验证器?
谢谢
在 https://github.com/jeffbrown/alejandroveraconstraints 查看项目。
// grails-app/domain/alejandroveraconstraints/Person.groovy
package alejandroveraconstraints
class Person {
String name
static constraints = {
name nullable: false, validator: Person.validateName
}
static validateName = {
it != 'Some Bad Name'
}
}
// src/test/groovy/alejandroveraconstraints/PersonSpec.groovy
package alejandroveraconstraints
import grails.testing.gorm.DomainUnitTest
import spock.lang.Specification
class PersonSpec extends Specification implements DomainUnitTest<Person> {
void "test validation"() {
expect:
!new Person(name: 'Some Bad Name').validate()
new Person(name: 'Some Good Name').validate()
}
}
我正在将一个大项目从 grails 2.5.4 迁移到 3.3.10。一切进展顺利,但我的领域对象出现了一个主要问题。我以前用这种方式编写我的自定义验证器:
class Person {
String name
static constraints = {
name: nullable: false, validator: validateName
}
static validateName = {
// validation code
}
}
Grails 抛出以下异常
No such property: validatorTest for class: org.grails.orm.hibernate.cfg.HibernateMappingBuilder
在 grails 3.x 中,这种定义验证器的方式似乎已被破坏。我知道文档说要这样使用:
name nullable: false, validator: { // code }
但在那种情况下需要重写很多代码。
有没有办法使用旧方法定义验证器?
谢谢
在 https://github.com/jeffbrown/alejandroveraconstraints 查看项目。
// grails-app/domain/alejandroveraconstraints/Person.groovy
package alejandroveraconstraints
class Person {
String name
static constraints = {
name nullable: false, validator: Person.validateName
}
static validateName = {
it != 'Some Bad Name'
}
}
// src/test/groovy/alejandroveraconstraints/PersonSpec.groovy
package alejandroveraconstraints
import grails.testing.gorm.DomainUnitTest
import spock.lang.Specification
class PersonSpec extends Specification implements DomainUnitTest<Person> {
void "test validation"() {
expect:
!new Person(name: 'Some Bad Name').validate()
new Person(name: 'Some Good Name').validate()
}
}