从 Grails 中的控制器渲染 json 视图

Posted

技术标签:

【中文标题】从 Grails 中的控制器渲染 json 视图【英文标题】:Rendering json views from controller in Grails 【发布时间】:2017-07-16 01:08:43 【问题描述】:

我发现 Grails 3.2+ 支持 json 视图,这为响应具有 json 提供了一种优雅的方式。

那么有没有一种方法可以让我们从控制器渲染一个自定义 JSON 模板,而不是在请求 URL 中使用“.json”。我尝试使用渲染方法,但不断收到找不到模板的错误。另外通读文档我似乎无法找到一种方法来做到这一点。这还受支持吗?

【问题讨论】:

【参考方案1】:

在 url 中包含 .json 只是另一种指定接受内容类型的方法。您可以指定标题。

有关如何使用 json 视图的说明,请阅读文档:http://views.grails.org/latest/

class Controller 
    def index() 
        [foo: new Foo()]
    

/grails-app/views/controller/index.gson

@Field Foo foo

json g.render(foo)

【讨论】:

【参考方案2】:

您可以使用 render(json:"path") 从控制器渲染任意 gson 视图。

SomethingController

def giveMeJson()
      render(json:"my_template",model:[some_data:some_instance])



【讨论】:

以上是关于从 Grails 中的控制器渲染 json 视图的主要内容,如果未能解决你的问题,请参考以下文章

Grails 渲染不同控制器的视图

Grails 不会将变量传递给嵌套模板

Grails文件上传:视图渲染时如何设置输入文件的值

Grails 中视图的 JSON 输出

Grails - 从 Javascript 方法调用控制器和渲染模板

Grails控制器渲染方法render vs respond