2017-08-21 35 views
0

我已经看过这个Grails get child domain objects但我仍然迷路。grails 3 - 获取子域对象

我已经加入到的conf/application.yml

converters: 
    encoding: UTF-8 
    grails.converters.json.default.deep: true 

但是,当我在一个域做一个东西,我仍然得到

[〜] $卷曲http://localhost:8080/request/2 { “ID” :2中, “流”:{ “ID”:2}, “release_label”: “ABC_4.3”, “DATE_CREATED”: “2017-08-21T13:06:27Z”, “ENVS”:[{ “ID” :1}]“status”:“init”}

我想让stream和envs成为e xpanded给所有的记录,而不仅仅是id。

所以请求,Groovy是

而且Stream.groovy是

package test 
import grails.rest.* 
class Stream { 
    String name 
    String feedgroup 
    String description 
    UnixGroup unixgroup 
    String swid 
    boolean powercentre = false 
    String latest_release 
    static hasMany = [envs: Env] 

    static constraints = { 
      name blank:false, unique: true 
    } 
} 

package test 
import grails.rest.* 

class Request { 
    Date date_created = new Date() 
    Date date_completed 
    String status = "init" 
    String release_label 
    Stream stream 
    static hasMany = [envs: Env] 

    static constraints = { 
      date_completed nullable: true 
    } 
     static searchable = { 
      only = [ 'stream', 'status' ] 
     } 
} 

我使用的Grails 3.30。

Grails.converters.json.default.deep仍然适用于Grails 3吗?我该如何使用它。因为你已经在grails.converters阻止

json.default.deep 

回答

0

有人告诉我在当应用程序配置文件是REST的API转换器不使用的Grails松弛页面。

应该使用JSON视图。在渲染,加上深厚的选项:真

json g.render(book, [deep:true]) 

这里的书是域

如需进一步信息,请参阅http://views.grails.org/latest/#_rendering_domain_classes

0
grails.converters.json.default.deep 

应改为只。

因此,它应该是这样的:

converters: 
    encoding: UTF-8 
    json.default.deep: true 
+0

试过上方,仍处于不完全的儿童信息输出。也试过它作为 json: 默认: 深:真 – John

+0

我设置了几个样本域类似于你提供和测试这个。我在输出中看到孩子信息: 'curl http:// localhost:8080/sample' '{“request”:{“id”:1,“stream”:{“id”:1,“ feedgroup “:” S2" , “名称”: “S1”, “ENVS”:[{ “ID”:1, “标题”: “TITLE1”, “名称”: “ENV1”}]}, “release_label”: “label1的”, “DATE_CREATED”: “2017-08-23T01:39:36Z”, “ENVS”:[{ “ID”:2 “标题”: “标题2”, “名称”: “ENV2”},{ “id”:1,“title”:“title1”,“name”:“env1”}],“date_completed”:null,“status”:“init”}}'也许试试gradle:clean first,发布更多的.yml /代码。 – LeslieV

+0

嗨LeslieV - 感谢您为此付出的努力。我再次清理并运行应用程序,结果仍然相同。 application.yml的其他部分对此有影响吗? 我不能认为我在做什么不同于自己。我没有在域中使用@Resource,但生成了控制器。所以我注意到你的curl使用应用程序名称,而我使用记录类型名称。 – John