Возврат пользовательских граляций ошибок валидатора - PullRequest
4 голосов
/ 06 ноября 2010

Я получаю только сообщение валидатора по умолчанию. Что я делаю не так?

class Questao {


static hasMany = [alternativas:Alternativa]

static constraints = {

    alternativas (validator: {val, obj ->
       if(val.size() < 2)
            return ['validator.message'] //custom message
        })
}
}

/ i18n

questao.alternativas.validator.message = "must be greater than two"

default.invalid.validator.message= Property [{0}] of class [{1}] with value [{2}] does not pass custom validation

Спасибо

Ответы [ 3 ]

7 голосов
/ 06 ноября 2010

Вы возвращаете список, содержащий ваш код сообщения - вам нужно вернуть только код:

alternativas validator: { val, obj ->
   if (val.size() < 2) {
      return 'validator.message' //custom message
   }
}
3 голосов
/ 06 ноября 2010

Этот API изменился. Возвращение строки с пользовательским сообщением об ошибке больше не будет работать. К сожалению, это плохо документировано.

Возвращение строки или непустого списка оценивается как true в соответствии с Groovy Truth . Это означает, что валидатор сигнализирует "принято". - Либо return false, либо, если вам нужно специальное сообщение об ошибке, явно rejectValue(..) значение:

alternativas (validator: {val, obj ->
   if(val.size() < 2)
       obj.errors.rejectValue('alternatives',
           'questao.alternativas.validator.message')
    })
0 голосов
/ 06 октября 2016

Дополнительно:

В Grails 2.5.2 (я тестировал только в этой версии), если вы используете аргумент ошибки в пользовательском закрытии валидатора и возвращаете код сообщения (или массив с кодом сообщения), он не работает, вам нужно использовать непосредственно объект ошибки, чтобы поставить код сообщения.

...