cho*_*ero 4 grails grails-controller grails-2.0
我试图使用Grails过滤器将自定义HTTP标头添加到一组特定控制器的响应中:
class ApiFilters {
def filters = {
xwingFilter(uri:'/api/**') {
after = {
response.setHeader('X-Wing', 'foo')
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果控制器呈现视图或文本,则标题将添加到响应中。如果控制器使用“ render as JSON”,则不添加标头。看起来JSON转换器正在关闭输出流并立即发送它。那正确吗?
我可以使用Grails拦截器,但必须在多个控制器中复制它。关于如何实现此目标的任何想法?
您可以在过滤器中执行从模型到JSON的转换,而不是执行以下操作:
控制器:
class myController {
def myAction() {
[aThing: 1, anotherThing: [a: 1, b: 2]]
}
}
Run Code Online (Sandbox Code Playgroud)
过滤:
class ApiFilters {
def filters = {
xwingFilter(uri:'/api/**') {
after = { model ->
response.setHeader('X-Wing', 'foo')
render model as JSON
return false // prevent normal view from rendering
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2980 次 |
| 最近记录: |