Проверка временного поля объекта команды 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