访问过滤器中的params.id时出现问题

时间:2010-08-13 22:19:35

标签: grails groovy

我需要创建一个在任何保存/更新操作上触发的过滤器,以便记录最新完成的历史记录。我在获取被操纵对象的id时遇到问题。

我的控制器简化了:

class FooController {

    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

    def save = {

        def fooInstance = new Foo(params)

        if (fooInstance.save()) {
           // params.id = fooInstance.id
            return redirect(action: "show", id: fooInstance.id)
        } else {
            return render(view: "create", model: [fooInstance: fooInstance])
        }
    }
}

我的过滤器需要获取我返回重定向的对象的id,但除非我取消注释params.id = fooInstance.id,我的过滤器上面的params.id获取null,我必须遗漏一些处理范围的内容变量:

 def filters = {

        history(controller: '*', action: 'save|update|delete|restore') {

            after = { 
                println params.id
            }
    }
}

我也试过将模型传递给after =期望得到我的fooInstance但是我也得到了null。关于什么错误的想法?感谢。

1 个答案:

答案 0 :(得分:2)

查看此插件http://grails.org/Hibernate+Events+Plugin或grails审核日志插件。我想他们会让你走得很远。

这是你在问题中提到的另一种方法,但我认为你可能更喜欢它。