Я пытаюсь понять, как сгенерированные в Grails 2.3.4 методы скаффолдинга выполняют проверку. Например, это то, что было сгенерировано для моего метода сохранения домена Club:
def save(Club clubInstance) {
if (clubInstance == null) {
notFound()
return
}
if (clubInstance.hasErrors()) {
respond clubInstance.errors, view:'create'
return
}
clubInstance.save flush:true
request.withFormat {
form {
flash.message = message(code: 'default.created.message', args: [message(code: 'clubInstance.label', default: 'Club'), clubInstance.id])
redirect clubInstance
}
'*' { respond clubInstance, [status: CREATED] }
}
}
Насколько я понимаю, первая фаза проверки произошла при привязке данных к параметру Club clubinstance действия сохранения. Таким образом, любые ошибки привязки данных будут обнаружены в if (clubInstance.hasErrors()).
Я не вижу явного вызова clubInstance.validate() или какой-либо проверки ошибок в clubInstance.save, как это предлагается в документации. Однако, похоже, это работает. Итак, как этот метод проверяет и возвращает обратно в представление, если есть нарушения ограничений?
Что еще более важно, не должны ли мы использовать сгенерированные контроллеры лесов в качестве наилучшего способа выполнения базового CRUD в Grails?