grails 3.1.1和json的观点

CJC*_*ers 6 rest grails json

我一直在玩Grails-3.1.1并创建restful服务但是当我使用它们从集合生成并使用模板响应时,我收到以下错误:

URI/api/buildings类java.lang.IllegalStateException消息错误呈现视图:呈现视图时出错:刚刚写入名称时无法写入名称.先写一个值!由于刚刚写入名称时无法写入名称.先写一个值!

我按照json-views github页面上的例子 https://github.com/grails/grails-views

我的index.gson文件看起来像这样

model {
  List<Building> buildingList
}

json tmpl.building(buildingList)
Run Code Online (Sandbox Code Playgroud)

和我的_building.gson模板文件一样

model {
  Building building
}

json  g.render(building)
Run Code Online (Sandbox Code Playgroud)

如果我不使用模板一切正常,但后来我得到的信息太少 - 我想扩展一些对象关系,而不是只返回id.使用show.gson模板访问相同的_building.gson文件似乎工作正常.有问题的控制器从RestfulController扩展而来,只实现了构造函数,如下所示

@Transactional(readOnly = true)
class BuildingRestController extends RestfulController {
    static responseFormats = ['json', 'xml']

    BuildingRestController() {
        super(Building)
    }
}
Run Code Online (Sandbox Code Playgroud)

什么是错的,其他人有没有工作?

堆栈跟踪:

   Line | Method
->>    8 | writeTo                 in C:\Users\Colin\code\biztool\grails-app\views\buildingRest\index.gson
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Caused by ViewRenderException: Error rendering view: Cannot write a name when a name has just been written. Write a value first!
->>    8 | writeTo                 in C:\Users\Colin\code\biztool\grails-app\views\buildingRest\_building.gson
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Caused by IllegalStateException: Cannot write a name when a name has just been written. Write a value first!
->>  624 | writeName               in grails.plugin.json.builder.StreamingJsonBuilder$StreamingJsonDelegate
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    563 | call                    in     ''
|    149 | process . . . . . . . . in grails.plugin.json.view.api.internal.JsonGrailsViewHelper
|     74 | doCall                  in grails.plugin.json.view.api.internal.JsonGrailsViewHelper$_render_closure1
|    689 | cloneDelegateAndGetContent in grails.plugin.json.builder.StreamingJsonBuilder$StreamingJsonDelegate
|    681 | cloneDelegateAndGetContent in     ''
|    199 | call . . . . . . . . .  in grails.plugin.json.builder.StreamingJsonBuilder
|     72 | render                  in grails.plugin.json.view.api.internal.JsonGrailsViewHelper
|     58 | render . . . . . . . .  in     ''
|      8 | run                     in _info_app_name__buildingRest__building_gson
|     32 | doWrite . . . . . . . . in grails.plugin.json.view.JsonViewTemplate
|     30 | writeTo                 in grails.views.AbstractWritableScript
|    280 | render . . . . . . . .  in grails.plugin.json.view.api.internal.JsonGrailsViewHelper
|     30 | invokeMethod            in grails.plugin.json.view.api.internal.TemplateRenderer
|      8 | run . . . . . . . . . . in _info_app_name__buildingRest_index_gson
|     32 | doWrite                 in grails.plugin.json.view.JsonViewTemplate
|     30 | writeTo . . . . . . . . in grails.views.AbstractWritableScript
|     64 | renderMergedOutputModel in grails.views.mvc.GenericGroovyTemplateView
|     94 | render . . . . . . . .  in grails.views.mvc.renderer.DefaultViewRenderer
|    188 | internalRespond         in grails.artefact.controller.RestResponder$Trait$Helper
|     62 | respond . . . . . . . . in     ''
|     64 | index                   in grails.rest.RestfulController
|     96 | doInTransaction . . . . in grails.transaction.GrailsTransactionTemplate$2
|     93 | execute                 in grails.transaction.GrailsTransactionTemplate
|     80 | doFilter . . . . . . .  in grails.plugin.springsecurity.rest.RestLogoutFilter
|     53 | doFilter                in grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter
|    143 | doFilter . . . . . . .  in grails.plugin.springsecurity.rest.RestAuthenticationFilter
|     62 | doFilter                in grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter
|     58 | doFilter . . . . . . .  in grails.plugin.springsecurity.web.SecurityRequestHolderFilter
|     35 | doFilterInternal        in CorsFilter.java
|   1142 | runWorker . . . . . . . in java.util.concurrent.ThreadPoolExecutor
|    617 | run                     in java.util.concurrent.ThreadPoolExecutor$Worker
^    745 | run . . . . . . . . . . in java.lang.Thread
Run Code Online (Sandbox Code Playgroud)