我正在尝试使用过滤器改变我的Grails 1.3.7应用程序中的JSON响应,但它们并不像我期望的那样工作。我想做的是在我的动作中使用类似render myobject as JSON
的内容,然后在过滤器中执行以下操作:
jsonPostProcess(controller:'json', action:'*') {
after = {
if (myCustomLogicHere) {
return false // render empty string
} else if (more logic) {
// write something else to the response
}
}
}
实际发生的是在执行after
块之前发回的响应。 afterView
也是如此。
有没有办法完成我正在尝试以Grails方式做的事情?
答案 0 :(得分:1)
从控制器返回myobject
,然后从过滤器中调用render
,例如:
class JsonController {
someAction = {
...
myobject
}
}
和
jsonPostProcess(controller:'json', action:'*') {
after = {
myobject ->
if (myCustomLogicHere) {
return false // render empty string
} else if (more logic) {
// write something else to the response
}
render myobject as JSON
}
}
答案 1 :(得分:0)
@JonoB答案几乎是正确的:
从控制器返回myobject,然后从过滤器调用render,例如:
class JsonController {
someAction = {
//...some logic
return [myobject: myobject]
}
}
并在过滤器中
jsonPostProcess(controller:'json', action:'*') {
after = {
Map model ->
//... my custom logic here
render model.myobject as JSON
return false
}
}