Ограничения класса домена Grails для связи между полями

StackOverflow https://stackoverflow.com/questions/2027818

Вопрос

Мне нужно написать ограничение класса домена в Grails, которое гласит, что одно целочисленное поле должно быть больше или равно другому.

Когда я пишу код, подобный этому:

class MyDomain {

 String title
 int valueMin = 1
 int valueMax = 1

 static constraints = {
  valueMin(min:1)
  valueMax(min:valueMin)
 }
}

Я получаю сообщение об ошибке:

Caused by: groovy.lang.MissingPropertyException: No such property: valueMin for class: MyDomain

Есть какие-нибудь идеи, пожалуйста?

Это было полезно?

Решение

http://grails.org/doc/latest/ref/Constraints/validator.html

Это должно более или менее сработать (не тестировалось)

class MyDomain {

 String title
 int valueMin = 1
 int valueMax = 1

 static constraints = {
  valueMin(min:1)
  valueMax(validator:{
    value, reference ->
    return value > reference.valueMin
  })
 }
}

Другие советы

Это не сработает, потому что ограничения представляют собой статический блок кода, который будет иметь доступ только к статическим переменным.

Итак, вы могли бы написать свой собственный настроенный cosntraint, если хотите:взгляните на эту ссылку:http://grails.org/doc/latest/guide/single.html#7.Валидация

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top