Restrições de classe de domínio Grails para relação entre campos
-
19-09-2019 - |
Pergunta
Preciso escrever uma restrição de classe de domínio no Grails que diz que um campo inteiro deve ser maior ou igual que o outro.
Quando escrevo o código assim:
class MyDomain {
String title
int valueMin = 1
int valueMax = 1
static constraints = {
valueMin(min:1)
valueMax(min:valueMin)
}
}
Estou recebendo um erro:
Caused by: groovy.lang.MissingPropertyException: No such property: valueMin for class: MyDomain
Alguma ideia, por favor?
Solução
http://grails.org/doc/latest/ref/constraints/validator.html
Isso deve mais ou menos trabalho (não testado)
class MyDomain {
String title
int valueMin = 1
int valueMax = 1
static constraints = {
valueMin(min:1)
valueMax(validator:{
value, reference ->
return value > reference.valueMin
})
}
}
Outras dicas
Isso não funcionará, porque as restrições são um bloco estático de código que só terá acesso a variáveis estáticas.
Então, você pode escrever seu próprio cosntraint personalizado, se quiser:Dê uma olhada neste link:http://grails.org/doc/latest/guide/single.html#7.Validação
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow