0

我想问一下是否可以关闭渲染表单和验证输入,然后让另一个控制器持久化?我与下面的这行代码有关:

def create() {
    if(params.size() <= 2) {
        [modelInstance: new <Domain>()]
    } else {
        def model = new <Domain>(params)
        if(!model.validate()) {
            render(view:"create", model: [modelInstance: model])
            return
        } else {
            chain(action:"save", model: [modelInstance: model])
        }
    }
}

def save() {
//  where the modelInstance object was created from the create closure
    if (!modelInstance.save(flush: true)) {
        render(view: "create", model: [modelInstance: modelInstance])
        return
    }

    flash.message = "Sucess!"
    redirect(action: "show", model: [modelInstance: modelInstance])
}

注意:第二个闭包save没有要渲染的 .gsp 文件,它只做持久性然后重定向进程,要么通过,要么失败。

当我在闭包中使用第一个 modelIstance 时save,页面返回HTTP 405错误。这是因为我们找不到model对象,但我们使用了chain方法?

4

1 回答 1

0

看起来您正在尝试使用更适合私有辅助方法的链。尝试将两个控制器中所需的逻辑封装在一个单独的方法中。

于 2012-09-04T14:55:56.383 回答