Рендеринг командного объекта в gson

Я использую Grails 3 и org.grails.plugins:views-json:1.0.0. Можно ли отобразить командный объект как результат json? Отображает ли он только классы предметной области, представленные в модели?

Я старался:

model {
    TrainingStatisticsCommand cmd
}

json.cmd {
    startDate cmd?.startDate
    endDate cmd?.endDate
    trainings tmpl.training(cmd?.trainings)
}

но я получил:

{
    "cmd": {
        "startDate": null,
        "endDate": null,
        "trainings": null
    }
}

Я выполняю его с контроллера как:

    respond cmd, [status: OK, view:"trainingsByClients"]

и объект cmd наверняка имеет внутри какие-то данные.


person Michal_Szulc    schedule 17.12.2016    source источник
comment
Я не уверен, но я думаю, что var внутри закрытия json.cmd должен быть им, а не cmd.   -  person gregorr    schedule 17.12.2016
comment
Я попробовал, но потом получил No such property: startDate for class: java.lang.Object, No such property: endDate for class: java.lang.Object и No such property: trainings for class: java.lang.Object.   -  person Michal_Szulc    schedule 17.12.2016
comment
Возможно, вам нужно объявить переменную типа json.cmd { var -> var.startDate ... }   -  person gregorr    schedule 17.12.2016
comment
Я пробовал, но все равно возникают No such property ошибки. Я думаю, что объект команды не обрабатывается должным образом.   -  person Michal_Szulc    schedule 17.12.2016
comment
Попробуйте это с ответом respond cmd, view: 'trainingsByClients', status: OK   -  person Hussain Fakhruddin    schedule 18.12.2016
comment
Безуспешно: Caused by: grails.views.ViewRenderException: Error rendering view: Cannot get property 'startDate' on null object, а затем Caused by: java.lang.NullPointerException: Cannot get property 'startDate' on null object.   -  person Michal_Szulc    schedule 18.12.2016


Ответы (1)


Ваша модель должна быть

model {
   TrainingStatisticsCommand trainingStatisticsCommand
}

Или вам нужно будет явно указать имя переменной модели.

person Graeme Rocher    schedule 21.12.2016
comment
спасибо @Грэм Роше. Я использовал render вместо respond с явной моделью, как я упоминал в stackoverflow.com/questions/41200464/ и это сработало. Однако я застрял в пользовательских gsons: визуализировать и ответить"> stackoverflow.com/questions/41231312/ (в этом случае и render, и respond не работают). - person Michal_Szulc; 21.12.2016