Ответ 1
Шаг 1: Создайте объект Object или Command Object и поместите на него пользовательские ограничения, как таковые...
@grails.validation.Validateable
class PeopleCommand {
String firstName
String lastName
String emailAddress
String idNumber
static constraints = {
firstName (blank: false)
lastName (blank: false)
emailAddress (blank: false)
idNumber (blank: false, size: 13..16, validator: {value, object ->
if (!value.startsWith('77')) return false;
})
}
}
Это проверит, будет ли введенный idNumber с 77. Если это не так, оно отправит сообщение об ошибке. Следующий вопрос, как мы отображаем ошибку?
Шаг 2. Настройте представление для отображения вашей ошибки
<div class="${hasErrors(bean:person,field:'idNumber','error')}">
<label class="control-label">Identity Number</label>
<input value="${fieldValue(bean:person,field:'idNumber')}" name="idNumber" type="text"/>
<div class="error-messages">
<g:renderErrors bean="${command}" as="list" field="idNumber"/>
</div>
</div>
В приведенном выше примере ${hasErrors(bean:person,field:'idNumber','error')}
добавит строку error
в класс html, если поле идентификатора объекта модели человека имеет ошибку. Этот класс можно использовать для стилизации ввода и отображения и/или скрытия блока div.error-messages
. <g:renderErrors bean="${command}" as="list" field="idNumber"/>
отобразит ужасное сообщение об ошибке.
Шаг 3. Создание сексуального пользовательского сообщения
ВАЖНО: Grails не позволяет отправлять сообщение непосредственно на Посмотреть. Вместо этого вы должны объявить сообщение в /i 18n/messages.properties(Связи писем). Вы можете использовать любую имеющуюся клавишу.
В свойствах messages.properties
validation.idStartsWith77=Your ID number must start with 77
В валидаторе
idNumber (blank: false, size: 13..16, validator: {value, object ->
return 'validation.idStartsWith77'
})
Теперь он передает ссылку на представление, указывая на ваше пользовательское сообщение в messages.properties...
Шаг 4: взломать систему, чтобы разрешить передачу сообщения непосредственно в представление
Это относится только к людям, которые специально не разрабатывают многоязычный веб-сайт.
Grails позволяет передавать пользовательские параметры в парсер. Вы можете обратиться к этим пользовательским параметрам в файл сообщений. Чтобы обмануть систему, мы можем создать настраиваемое сообщение, где все сообщение является одним настраиваемым параметром. Таким образом:
В свойствах messages.properties
validation.customRuntimeMessage={3}
В валидаторе
idNumber (blank: false, size: 13..16, validator: {value, object ->
return ['validation.customRuntimeMessage', 'You need to start your ID with 77']
})