【问题标题】:Rendering few models in gson在 gson 中渲染几个模型
【发布时间】:2026-02-02 04:00:01
【问题描述】:

是否可以将少量对象发送到 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"
      }
    }
  ]
}

【问题讨论】:

    标签: grails gson grails3


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      其实在使用respond的时候,你必须对所有模型属性使用g.render方法

      gson 视图示例:

        model {
          Iterable<Training> trainingList
          String myVariable
      }
      
      json {
          myVariable g.render(myVariable)
          trainings tmpl.training(trainingList ?: [])
      }
      

      这个只和你在respond.model参数中解析的模型有关

      【讨论】: