bind_ata在调用save()之前保存数据

时间:2014-12-04 00:50:41

标签: grails

我正面临着一个非常奇怪的情节。

情况就是这样。

我调用控制器方法

controller.updateQuestion(question.id)

现在我使用的控制器

//here question is first retrieved from as def question = Question.get(id)
binddata(question, params)

现在在上面的代码之后我做了

question.validate()

然后检查问题是否有错误。如果是,则返回而不保存,即

question.save(flush:true)

现在这就是我的工作。我调用controller.updateQuestion(question.id)发送有错误的参数(其中一个参数有错误,所以这个函数不应该成功。它不应该更新问题)

奇怪的是它似乎没有达到我所拥有的地步

question.save(flush:true)

然而,它将参数值保存到域对象。

所以,我怀疑的是,binddata(问题,params)正在进行保存吗?

1 个答案:

答案 0 :(得分:1)

您有很多选择。一种是如果你进入一个你想要解除变化的状态,就要回滚交易......

class SomeController {
    def someAction() {
        SomeDomain.withTransaction { tx ->
            // retrieve a persistent instance and mutate it

            // check to see if everything is ok

            if(somethingWentWrong) {
                tx.setRollbackOnly()
            }
        }
    }
}