【问题标题】:grails - show validation error messages on gspgrails - 在 gsp 上显示验证错误消息
【发布时间】:2014-07-09 13:11:39
【问题描述】:

我有以下域类:

class User {

    String name
    String contactName
    String primaryEmail
    String url
    String phoneNumber
    String address

    static hasMany = [users: User]

    static constraints = {
        name blank: false
        contactName blank: false
        primaryEmail email: true
        url blank: false
        phoneNumber blank: false
        address blank: false
    }
}

用户的控制器:

class UserController {

    def create() {
        User user = new User()
        [user: user]
    }

    def save(User user) {
        if (!user.save(flush: true)) {
            render (view : 'create', model: [user: user])
        }

        redirect action: 'create'
    }
}

如果验证失败,我想显示验证错误。我的 create.gsp 看起来像这样:

<body>
<g:form action="save" >
    <g:renderErrors bean="${user}"/>
    <g:textField name="user.name" id="message" value="${user.name}"/>
    <g:textField name="user.contactName" id="contactName" value="${user.contactName}"/>
    <g:textField name="user.primaryEmail" id="primaryEmail" value="${user.primaryEmail}"/>
    <g:textField name="user.url" id="url" value="${user.url}"/>
    <g:textField name="user.phoneNumber" id="phoneNumber" value="${user.phoneNumber}"/>
    <g:textField name="user.address" id="address" value="${user.address}"/>

    <g:submitButton name="submit" value="Save"/>
</g:form>

</body>
</html>

但是在 create.gsp 和无效数据的 sumbit 之后发生了两件奇怪的事情 1) 尽管所有字段都具有映射到 User bean 的某些字段的 value 属性,但所有字段都是空的

2) 页面上没有验证错误 我做错了什么? 谢谢!

【问题讨论】:

    标签: grails grails-domain-class grails-controller


    【解决方案1】:

    调用render()或使用else后必须返回

    def save(User user) {
        if (!user.save(flush: true)) {
            render (view : 'create', model: [user: user])
            return // either return here
        }else // or else here
    
        redirect action: 'create'
    }
    

    在您的原始代码中,您重定向到 create 并且不向其中传递任何模型

    【讨论】:

    • 嗯,谢谢 :-) 你为我节省了几个小时)
    猜你喜欢
    • 1970-01-01
    • 2017-10-19
    • 2012-06-12
    • 2016-08-03
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 2022-06-20
    相关资源
    最近更新 更多