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

我的 Controller 简化了:

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。关于出什么问题有什么想法吗?谢谢。

请您参考如下方法:

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

与您在问题中提到的方法不同,但我认为您可能更喜欢它。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!