2012-02-28 11 views
2

私はフィルタ(すべてのアクションの前に呼び出されている)を持っていると仮定して、どのビューにどのオブジェクトを渡してデータベースからフェッチすることができますか?私はリファクタリングしたくない。 私のすべての方法。GRAILS:すべてのビューにオブジェクトを渡しますか?

をIは、例えば、オブジェクトを設定するフィルタ有する:

def god = God.find(1) 

を、私は100×100図である各コントローラ100の方法、100のコントローラを有するvizualizeする

。 は、通常動作中のあなたのような何かを書く:

def index = { 
def something = Something.find(1) 
[something: something] 
} 

質問は、私はあなたがafterインターセプタを望む

[something: something, god: god] 

答えて

3

に戻り配列を変更することなく、同様Godオブジェクトを渡すことができる方法ですそのためにフィルタに入力します。 afterは、クロージャの引数としてmodelを受け取り、そのモデルに神を追加できます。

myFilter(controller:'*', action:'*') { 
    after = { model -> 
     def god = God.find(1) 
     model.god = god 
    } 
} 

Here's関連するドキュメントセクション。

+0

それは私が望んでいた答えです、ありがとう! – mkk

1

同じことができる他の場所は、afterInterceptorです。 Hereは同じドキュメントです。 afterInterceptorは、オブジェクトを抽出するビジネスロジックがあり、同じロジックをフィルタにコピーしたくない場合に最適です。

+0

は当てはまりません。コントローラーにインターセプターを設定したのでしょうか? – mkk

関連する問題