Я знаю, что это несколько лет, но я думаю, что вопрос все еще актуален.
Grails предоставил более удобный способ проверки ввода формы и возврата сообщений об ошибках флэш-памяти с помощью объектов объектов и i18n message.properties.
По сути, вам не нужно писать перехватчик.Вы создаете командный объект в вашем контроллере со всеми полями формы, которые вы ожидаете получить при отправке.Затем создайте ограничения проверки для каждого поля и создайте свои сообщения i18n для ошибок нарушения ограничений.
Теперь, когда вы определяете действие контроллера и вставляете объект команды в качестве параметра:
def someAction(MyCommandObject command) {}
Параметр объекта команды действует подобно beforeInterceptor, в котором Grails автоматически связывает данные из формы и отправляет соответствующие атрибуты объекта команды - но подождите!Это не все!Grails также применяет ограничения к данным из формы и по существу выполняет command.validate()
all ДО любой код, выполняемый в действии.Вот почему это хорошая и общепринятая практика - проверять экземпляр объекта команды на наличие ошибок перед выполнением любого другого кода в вашем действии, например:
def someAction(MyCommandObject command) {
if(command.hasErrors()){
//do something -- set flash message error and redirect, etc.
}
//other importand code follows ...
}
Я надеюсь, что это поможет другим, кто может найти этот вопросСоответствующий.Это только один пример того, насколько полезными и мощными могут быть объекты команд.