收集常用数据的最佳/最干净方法是什么,例如侧边栏的数据。在我的应用程序中,我将只有两组不同的数据,具体取决于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
语句都开始变得混乱。
答案 0 :(得分:2)
也许filter可以帮助您:
class MyFilters {
def filters = {
all(controller: '*', action: '*') {
after = { Map model ->
model.myCommonProperty = ...
}
}
}
}
在过滤器中,您可以在处理请求之前/之后执行常见操作(即将常用数据添加到模型中)。在all(controller: '*', action: '*')
中,您可以定义应由过滤器处理的操作(在这种情况下,处理所有控制器中的所有操作)。
另一种方法是在控制器中使用beforeInterceptor。如果您需要在单个控制器中执行常见操作,则可以使用此功能。