Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails JSON呈现程序未公开拦截器的模型_Grails_View_Json View - Fatal编程技术网

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
。我将创建一个示例项目进行演示,并提供一个解决方案