处理操作后如何在Grails中查看和过滤响应?

时间:2012-07-10 16:52:54

标签: ajax json grails groovy

我正在尝试使用过滤器改变我的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方式做的事情?

2 个答案:

答案 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
    }
}