在Grails應用程序中,我正在尋找一些方法將數據從控制器操作傳遞到操作後運行的過濾器。我喜歡思考的東西:從控制器向過濾器傳遞數據
class MyController {
def myAction = {
render(view:"myView", model:[key: "value"])
passData {
// Do some processing here
name = "paolo"
age = 38
}
}
}
public class MyFilters {
def name
def age
def filters = {
myFilter(controller: "*", action: "*") {
after = { model ->
// Do something with name and age
return true
}
}
}
}
最初的計劃是做在BootStrap.config的的init()關閉以下幾點:
- 使用元編程添加一個「passData(閉幕pdClosure)「方法
- 將pdClosure的委託設置爲MyFilters,以便在此閉包中設置名稱和年齡屬性時,它們將在MyFilters實例上進行設置。
但是,我意識到這是行不通的,因爲沒有明顯的方式讓我訪問(從BootStrap.init)MyFilters實例,該實例將被調用特定的控制器。
同樣,似乎沒有任何方式可以從過濾器中訪問控制器實例。當然,我可以將所有的數據填充到模型中,但是我想知道是否有更好的方法在兩者之間傳遞數據?
謝謝, 唐