Ограничения класса домена Grails для связи между полями
-
19-09-2019 - |
Вопрос
Мне нужно написать ограничение класса домена в 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.Валидация
Не связан с StackOverflow