收集和呈现常见数据

时间:2013-04-25 16:30:56

标签: grails groovy

收集常用数据的最佳/最干净方法是什么,例如侧边栏的数据。在我的应用程序中,我将只有两组不同的数据,具体取决于User是否在Project中。

我现在这样做:

def dashboard = {   
    def returnVal = getCommonSidebarContent()       
    returnVal << getCommonHeaderContent()
    returnVal << [
        //other data related to the main content of this particular page
        ]
    return returnVal
}   

getCommonSidebarContent()之类的内容将返回用户任务和其他数据的地图。

我知道这很糟糕,这是我开始时所做的,但随着时间的推移,我从未接受过排序。几乎每种控制器方法中的returnVal语句都开始变得混乱。

1 个答案:

答案 0 :(得分:2)

也许filter可以帮助您:

class MyFilters {
    def filters = {
        all(controller: '*', action: '*') {
            after = { Map model ->
              model.myCommonProperty = ...
            }
        }
    }
}

在过滤器中,您可以在处理请求之前/之后执行常见操作(即将常用数据添加到模型中)。在all(controller: '*', action: '*')中,您可以定义应由过滤器处理的操作(在这种情况下,处理所有控制器中的所有操作)。

另一种方法是在控制器中使用beforeInterceptor。如果您需要在单个控制器中执行常见操作,则可以使用此功能。