我需要创建一个在任何保存/更新操作上触发的过滤器,以便记录正在执行的操作的历史记录。我在获取被操纵对象的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审核日志插件。我想他们会带您走得很远。
与您在问题中提到的方法不同,但我认为您可能更喜欢它。




