好的,我有一个Grails过滤器,如下所示:
after = { model ->
modifyDataFromController(model)
}
我想修改从控制器渲染的数据,如下所示:
def myAction = {
def myJson = getJson() // this returns JSON
render(contentType:"application/json", text:myJson)
}
那么,有没有办法让我通过模型对象访问myJson?如果没有,我该如何从控制器访问数据?请非常具体,不要以为我知道你在说什么。 :)
提前致谢。
答案 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]