контроллеры Grails отображают ошибки - PullRequest
2 голосов
/ 09 мая 2011
class Person {
   String name
   Integer age
   String street
   String email
}

class PersonController {
    def save = {
        def personInstance = new Person(params)
        personInstance.save(flush:true)
    }
}

main.gsp

<g:form controller="person" action="save">
    <g:textField name="name" />
    <g:textField name="age" />
    <g:textField name="street" />
    <g:textField name="email" />
    <g:submitButton name="save" value="Save" />
</g:form>

Какие изменения необходимо внести как в контроллер, так и в страницу gsp, чтобы отобразить ошибки на странице gsp?

Ответы [ 2 ]

4 голосов
/ 09 мая 2011

Измените действие контроллера на

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. Конечно, сначала убери свой путь.

0 голосов
/ 19 мая 2016

Вы должны установить либо:

Вид:

render view:"/example"

Или:

render "${personInstance.name} successfully inserted"
...