如何从Grails过滤器访问数据?

时间:2013-01-17 04:50:04

标签: grails groovy

好的,我有一个Grails过滤器,如下所示:

after = { model ->
    modifyDataFromController(model)
}

我想修改从控制器渲染的数据,如下所示:

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

那么,有没有办法让我通过模型对象访问myJson?如果没有,我该如何从控制器访问数据?请非常具体,不要以为我知道你在说什么。 :)

提前致谢。

2 个答案:

答案 0 :(得分: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)
}

答案 1 :(得分:0)

而不是渲染空白模板,您只需返回模型本身

以下可以是您行动的最后一行。

[data:myJson]