2013-01-17 29 views
0

OK,我有一個Grails的過濾器,看起來像這樣:如何從Grails過濾器訪問數據?

after = { model -> 
    modifyDataFromController(model) 
} 

我要修改的數據得到從控制器呈現:

def myAction = { 
    def myJson = getJson() // this returns JSON 
    render(contentType:"application/json", text:myJson) 
} 

那麼,有沒有適合我的方式通過模型對象訪問myJson?如果不是,我該如何訪問控制器的數據?請非常具體,不要以爲我知道你在說什麼。 :)

在此先感謝。

+0

只是爲了澄清,爲什麼你需要一個過濾器?爲什麼不修改控制器本身的數據? – aldrin

回答

0

在過濾器中的model屬性爲null,因爲

render(contentType:"application/json", text:myJson) 

寫入myJson直接進入反應。我找不到解決方案來訪問過濾器方法中的響應內容,如果有人有優雅的方式來做到這一點,請在這裏發佈解決方案。

在這個時刻我能想出是修改render到這樣的事情:

render(template:'blankTemplate', model:[data:myJson]) 

其中blankTemplate指的是一個空白的GSP文件,即_blankTemplate.gsp。然後在過濾器就可以訪問JSON數據,之後使其:

after = { model -> 
    modifyDataFromController(model.data) 
    render(contentType:"application/json", text:model.data) 
} 
0

,而不是渲染空白模板,你可以只返回模型本身

繼可以是你行動的最後一行。

[data:myJson]