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

保存に失敗した場合は、redirect() メソッドの代わりに render を呼び出します。

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