【问题标题】:Default error messages in Grails not rendering in viewsGrails 中的默认错误消息未在视图中呈现
【发布时间】:2013-01-29 00:09:42
【问题描述】:

如果在插入用户时发生一些错误,我想在视图中获取默认错误消息。在控制器中我有 2 个动作:

def openPage() {
    [user: new User(params)]
}

def save() {
    User user = new User(params)
    if (!user.save(flush:true)) {
        redirect(view:'openPage', model:[user:user])
        return
    } else {
        flash.message = "User saved"
        redirect(action:'openPage')
    }
}

这是我的 gsp:

<g:hasErrors bean="${user }">
    <g:eachError bean="${user }" var="error">
        <li>${error } </li>
    </g:eachError>
</g:hasErrors>



<g:if test="${flash.message }">
    ${flash.message }
</g:if>
    <g:form action="save"> 
        Name:<g:textField name="username"/>
        <g:submitButton name="ok" value="Save"/>
    </g:form>

但是有问题,如果我没有发送任何值,我看不到任何错误。这是我的域名:

String username

static constraints = {
    username(nullable:false, blank:false, unique:true)
}

我的代码有什么问题?请帮忙。我必须使用这种方法来捕获错误还是最好使用 if...else 和 try...catch?

【问题讨论】:

  • 我明白了。我必须渲染到视图,而不是重定向。

标签: grails message


【解决方案1】:

如果保存失败,调用 render 而不是 redirect() 方法:

if (!user.save(flush:true)) {
    render(view:'openPage', model:[user:user])
    ...

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 2011-06-22
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多