在 gson 中渲染几个模型

Rendering few models in gson

是否可以将很少的对象发送到gson渲染视图中? 我尝试在 controller:

中使用
respond trainings, [status: OK, view:"trainingsByClients", model: [myVariable: "test", anotherVariable: 123]]

并且在 gson 视图中

model {
    Iterable<Training> trainingList
    String myVariable
}

json {
    myVariable myVariable
    trainings tmpl.training(trainingList ?: [])
}

它的响应是:

{
  "myVariable": null,
  "trainings": [
    {
      "id": 3,
      "name": "test t",
      "numberOfAbsentClients": 0,
      "startDate": "2016-11-20T09:00:00+0000",
      "numberOfClients": 2,
      "section": {
    "id": 1,
    "name": "test sec"
      }
    },
    {
      "id": 10,
      "name": "test 2",
      "numberOfAbsentClients": 0,
      "startDate": "2016-11-09T11:00:00+0000",
      "numberOfClients": 2,
      "section": {
    "id": 2,
    "name": "sec 2"
      }
    }
  ]
}

好的,我找到了解决方案:

    render(view: "trainingsByClients", model: [trainingList: trainings, myVariable: "asdg"])

所以我们应该使用render而不是respond。响应未正确添加其他模型对象。

实际上,在使用 respond

时,您必须对所有模型属性使用 g.render 方法

gson 视图示例:

  model {
    Iterable<Training> trainingList
    String myVariable
}

json {
    myVariable g.render(myVariable)
    trainings tmpl.training(trainingList ?: [])
}

这仅与您在respond.model参数中解析的模型有关