Как просмотреть и отфильтровать ответ в Grails после обработки действия?
Я пытаюсь изменить ответы JSON в своем приложении Grails 1.3.7 с помощью фильтров, но они работают не так, как я ожидаю. То, что я хотел бы сделать, это использовать что-то вроде 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
,
Есть ли способ выполнить то, что я пытаюсь сделать способом Грааля?
2 ответа
Решение
@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
}
}
Вернуть 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
}
}