Grails JSON呈现程序未公开拦截器的模型
我想使用Grails JSON呈现程序未公开拦截器的模型,grails,view,json-view,Grails,View,Json View,我想使用拦截器中的模型字段作为JSON REST响应 控制器方法使用域对象进行响应: def show(String id) { respond User.get(id) } JSON视图使用JsonViewJsonRenderer,它扩展了DefaultViewRenderer,直接调用 view.render(model, request, response) 并且不需要公开ModelAndView实例。其他渲染器,例如DefaultHtmlRenderer,通过以下方式公开
拦截器
中的模型
字段作为JSON REST响应
控制器方法使用域对象进行响应:
def show(String id) {
respond User.get(id)
}
JSON视图使用JsonViewJsonRenderer
,它扩展了DefaultViewRenderer
,直接调用
view.render(model, request, response)
并且不需要公开ModelAndView
实例。其他渲染器,例如DefaultHtmlRenderer
,通过以下方式公开模型:
applyModel(context, object)
在使用JSON响应响应时,是否有方法获得要填写的模型字段?我是否需要构建自己的DefaultHtmlRenderer
子类来设置ModelAndView
作为一种解决方法,我可以为每个响应创建一个ModelAndView
,但这似乎不符合Grails的易用性精神:
def show(String id) {
respond new ModelAndView('user/show', User.get(id))
}
有没有办法在响应时填写模型字段
使用JSON响应
对。所有拦截器中都有一个模型
属性可用。通常,这将在拦截器的after()
方法中访问
我是否需要构建自己的DefaultHtmlRenderer子类来设置
模型和视图
否。听起来这是
视图json
/JsonViewJsonRenderer
中的一个bug,因为after()
方法中的模型是null
。我将创建一个示例项目进行演示,并提供一个解决方案