Grails - объект Command, настраиваемый условный валидатор

Я хотел бы создать настраиваемый валидатор в моем объекте Command, чтобы убедиться, что поле email address формы не будет пустым, если notifyMe checkbox выбран.

Вот моя последняя попытка реализовать это:

email(blank: true, nullable: true, email: true,
                  validator: {email, creditProviderCommand ->
                              if (creditProviderCommand.notifyMe == 'on')
                                    return email.size() > 0})

Я пробовал также с email != null а также email != '' но это не работает в обоих случаях, это означает, что представление формы принимается даже с notifyMe checkbox проверил и email address поле оставлено пустым.

Код действия правильно обрабатывает ошибку проверки (даже уникальное ограничение). Есть идеи, что я делаю не так?

Большое спасибо за Вашу помощь.

1 ответ

Код выше выглядит хорошо для меня. Вы на 100% уверены, что creditProviderCommand.notifyMe == 'on' когда флажок установлен?

отправка формы принимается даже с флажком notifyMe

Отправка формы всегда будет принята, даже если есть ошибки проверки. Вы несете ответственность за проверку ошибок валидации и решение, что делать в случае неудачи валидации, например

def myAction = {MyCommand cmd ->

  if (cmd.validate()) {
    // code to be executed when validation succeeds
  } else {
    // code to be executed when validation fails
  }
}
Другие вопросы по тегам