grails - Grails JSON 渲染器未公开拦截器的模型
问题描述
我想将model
字段Interceptor
用于 JSON REST 响应。
控制器方法以域对象响应:
def show(String id) {
respond User.get(id)
}
JSON 视图使用JsonViewJsonRenderer
which extends 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 响应时填写模型字段?
是的。model
所有拦截器都有一个可用的属性。通常这将在after()
拦截器的方法中访问。
我是否需要构建自己的 DefaultHtmlRenderer 子类来设置 ModelAndView?
不。
推荐阅读
- css - Bootstrap 3 - 如何使用切换更改“.active”按钮的颜色?
- wpf - 如何检索从 wpf 应用程序打开的已保存文件
- java - Bitstamp API:始终接收 API0000(缺少密钥、签名和随机数参数。)
- julia - Julia 不更新其软件包
- javascript - 如何开玩笑地检查消极和积极的情况?
- javascript - 为什么实例化的对象即使在原型被重新分配给空对象后仍然具有原型的属性?
- php - 从 json 数据中获取特定值
- php - PHP数组删除元素或减法
- reactjs - 嵌套类在带有 webpack 的 CSS 模块中不起作用
- python-3.x - Python:在一个图中绘制多个散点图