У меня есть класс домена с некоторыми пользовательскими валидаторами, как следующее:Grails 2.4.2 - временная точка валидации объекта домена
class Domain {
String attribute1
OtherDomain attribute2
static constraints = {
attribute2 nullable: true, validator: {OtherDomain od, Domain d ->
if (od) {
log.debug "entering validation"
// certain validation here
}
}
}
Для обновления я получил простое действие в соответствующем DomainController
:
@Transactional
def update(Domain domainInstance) {
log.debug "entering update()"
// rest of update
}
Я задаюсь вопросом, почему в моем debuglog
я получаю сообщения отладки в следующем порядке:
entering validation
entering update()
Проблема заключается в том, что проверка дала отрицательный результат в этой точке (StackOverflowError
). Я знаю причину этой ошибки, и я знаю, что делать, чтобы обойти эту ошибку (делая это в действии update
). Тем не менее, я не знаю, почему есть подтверждение, прежде чем программа даже попадет в действие update()
. И я не знаю, как предотвратить проверку на этом этапе.
Есть ли у вас какие-либо предложения?
Спасибо за ваш ответ и объяснение! Когда я перечитал документацию о привязке данных, я нашел ее также здесь: [Документация по Grails - Проверка ограничений: фазы проверки] (http://docs.grails.org/latest/guide/single.html#validatingConstraints) – gabriel