0

收集常见数据(例如侧边栏的数据)的最佳/最干净的方法是什么。在我的应用程序中,我将永远只有两组不同的数据,这取决于 aUser是否在 a 中Project

我现在正在这样做:

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

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

我知道这很糟糕,它是我开始的,但随着时间的推移,我再也没有时间对它进行分类。returnVal几乎每个控制器方法中的语句开始看起来很混乱。

4

1 回答 1

2

也许过滤器可以帮助您:

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

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

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

于 2013-04-25T18:47:04.063 回答