Измените действие контроллера на
def save = {
def personInstance = new Person(params)
if (!personInstance.save(flush: true)) {
render view: 'create', model: [personInstance: personInstance]
return
}
flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), personInstance.id])}"
redirect action: 'show', id: personInstance.id
}
и добавьте это прямо перед вашим <g:form>
:
<g:hasErrors bean="${personInstance}">
<div class="errors">
<g:renderErrors bean="${personInstance}" as="list" />
</div>
</g:hasErrors>
Рассмотрите возможность запуска grails generate-all packagename.Person
и редактирования сгенерированного контроллера и GSP. Конечно, сначала убери свой путь.