0

如果在插入用户时发生某些错误,我希望查看默认错误消息。在控制器中我有 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?

4

1 回答 1

1

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

if (!user.save(flush:true)) {
    render(view:'openPage', model:[user:user])
    ...
于 2013-01-28T16:09:42.377 回答