0

サイドバーのデータなど、一般的なデータを収集するための最良/最もクリーンな方法は何ですか? 私のアプリケーションでは、aUserが a にあるProjectかどうかに応じて、2 つの異なるデータ セットしかありません。

私は今このようにやっています:

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 に答える