Question

Je suis un débutant dans Grails et groovy. J'ai un projet de domaine classe avec date de début et de fin. Je veux mettre dans une contrainte précisant que la date de fin doit être supérieure à la date de début (puis encore un autre objet enfant des besoins du projet pour avoir son startdate et enddate validate avec les dates du projet parent). Est-ce possible avec la contrainte min ou dois-je le mettre ailleurs? contrainte unique ne permet deux propriétés à relier cette façon, dans l'espoir des contraintes min / max permettent cela. J'ai essayé

startDate(blank:false)
endDate(blank:false, min:'startDate')

Il renvoie une erreur indiquant que le startDate de propriété ne sont pas disponibles sur le projet

Était-ce utile?

La solution

Essayez d'utiliser un validateur personnalisé:

static constraints = {
    endDate(validator: { val, obj ->
        val?.after(obj.startDate)
    })
}

val est la valeur du champ et obj est une référence à l'objet en cours de validation. La fermeture peut contenir tout logique dont vous avez besoin, vous pouvez prolonger votre validation de la façon que vous décrivez dans votre question (en accédant à l'enfant des objets que vous faites référence à l'utilisation obj).

Le validateur personnalisé est assez flexible. Jetez un oeil à la documentation . Idéalement, vous aurez envie de retourner un message personnalisé; comment faire peut également être trouvée dans les documents liés ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top