2013-04-25 64 views
0

收集常用數據(如側欄數據)的最佳/最乾淨的方式是什麼?在我的應用程序中,我將只有兩組不同的數據,具體取決於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

你應該使用這種東西服務 – 2013-04-25 16:49:48

+0

使用數據庫! – 2013-04-25 18:46:38

回答

2

也許filter可以幫助你:

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

內的過濾器,你可以進行常用操作前/一個請求被處理後(即加入通用數據模型)。在all(controller: '*', action: '*')內,您可以定義應該由過濾器處理的操作(在這種情況下,將處理所有控制器中的所有操作)。

另一種方法是在控制器中使用beforeInterceptor。如果您需要在單個控制器中執行常見操作,則可以使用此功能。

+0

謝謝,這看起來是我的後,我會給它一個去。如果我使用'all(controller:'*',action:'*')'',那麼控制器的動作是否會傳回模型,而是重定向呢? – 2013-04-26 10:35:12

+0

我不確定,但我認爲'after'方法也應該在重定向事件中調用。 – micha 2013-04-26 19:46:15