我需要创建一个在任何保存/更新操作上触发的过滤器,以便记录最新完成的历史记录。我在获取被操纵对象的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。关于什么错误的想法?感谢。
答案 0 :(得分:2)
查看此插件http://grails.org/Hibernate+Events+Plugin或grails审核日志插件。我想他们会让你走得很远。
这是你在问题中提到的另一种方法,但我认为你可能更喜欢它。