Пользовательское имя валидатора в Grails 3 - PullRequest
0 голосов
/ 11 июня 2019

Я перевожу большой проект с 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 }

Но в этом случае переписать много кода.

Есть ли способ использовать старый метод определения валидаторов??

Спасибо

1 Ответ

2 голосов
/ 11 июня 2019

См. Проект на https://github.com/jeffbrown/alejandroveraconstraints.

https://github.com/jeffbrown/alejandroveraconstraints/blob/master/grails-app/domain/alejandroveraconstraints/Person.groovy:

// 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'
    }
}

https://github.com/jeffbrown/alejandroveraconstraints/blob/6701f61d61dbbde34f4925d1bf418448eee0a729/src/test/groovy/alejandroveraconstraints/PersonSpec.groovy:

// 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()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...