Проверка временного поля объекта команды Grails

У меня есть форма регистрации пользователя, где поля проверяются с помощью объекта команды. Одним из полей является флажок, который должен быть установлен перед продолжением регистрации, и он не сохраняется в объекте домена. Этот флажок имеет соответствующее логическое поле в объекте команды. Если флажок не установлен, выдается ошибка проверки из пользовательского средства проверки.

Проблема в том, что эта ошибка не распространяется в <g:renderErrors bean="${command}" as="xml"/> блок (валидатор запущен правильно).

Командный объект:

class RegisterCommand {

...
Boolean termsChecked
...
static constraints = {
    ...
    termsChecked validator: RegisterController.termsCheckedValidator
}

Оценщик:

static final termsCheckedValidator = {termsChecked, command, errors ->
    if (!command.termsChecked) {
        return 'registerCommand.termsChecked.required'
    }
}

Флажок в файле GSP:

<g:checkBox value="${command.termsChecked}" bean="${command}" name='termsChecked'/>

Как это можно решить?

1 ответ

Решение

Если вы передаете 3 параметра в валидатор с последним errors тогда код возврата игнорируется, думая, что Spring Errors заботится об ошибках.

Если вы хотите использовать код ошибки, просто передайте 2 параметра в валидатор как

static final termsCheckedValidator = {termsChecked, command ->
    if (!command.termsChecked) {
        return ['required.termsChecked']
    }
}


//messages.properties
registerCommand.termsChecked.required.termsChecked=blah
Другие вопросы по тегам