GRAILS:将对象传递给每个视图?

时间:2012-02-28 22:10:38

标签: grails

假设我有一个过滤器(在每个动作之前调用),我如何传递一个对象,该对象从其中的数据库中提取到每个视图?我不想重构 我所有的方法。

Vizualize:

我有一个设置对象的过滤器,例如:

def god = God.find(1)

我有100个控制器,每个控制器100个方法,即100 * 100个视图。 通常在你写的动作中写道:

def index = {
 def something = Something.find(1)
 [something: something]
}

问题是我如何传递God对象,而不必将返回数组修改为

[something: something, god: god]

2 个答案:

答案 0 :(得分:3)

您希望为此过滤器设置after拦截器类型。 aftermodel作为闭包的参数,您可以将神添加到该模型中。

myFilter(controller:'*', action:'*') {
    after = { model ->
        def god = God.find(1)
        model.god = god
    }
}

Here's相关文档部分。

答案 1 :(得分:1)

其他可以做同样事情的地方是afterInterceptor。 Here是相同的文档。 afterInterceptor最适合用于提取对象的一些业务逻辑,并且不希望将相同的逻辑复制到过滤器。