【问题标题】:grails controllers render errorsgrails 控制器呈现错误
【发布时间】:2011-05-08 22:24:52
【问题描述】:
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 页面?

【问题讨论】:

    标签: grails controller render


    【解决方案1】:

    将控制器动作更改为

    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
    }
    

    并将其添加到您的 &lt;g:form&gt; 之前:

    <g:hasErrors bean="${personInstance}">
       <div class="errors">
          <g:renderErrors bean="${personInstance}" as="list" />
       </div>
    </g:hasErrors>
    

    考虑运行 grails generate-all packagename.Person 并编辑生成的控制器和 GSP。当然先把你的移开。

    【讨论】:

    • 非常感谢。只是 wat iv 寻找。 @投票并接受。
    【解决方案2】:

    你必须设置:

    查看:

    render view:"/example"
    

    或者:

    render "${personInstance.name} successfully inserted"
    

    【讨论】:

    • 删除你的一个答案,你已经提出了两次相同的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2019-03-10
    相关资源
    最近更新 更多