Grails 3.1.1& json观点

时间:2016-02-16 23:09:16

标签: json rest grails

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

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)

我的_building.gson模板文件就像这样

model {
  Building building
}

json  g.render(building)

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

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

    BuildingRestController() {
        super(Building)
    }
}

任何想法出了什么问题,其他人有没有工作?

堆栈追踪:

   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

0 个答案:

没有答案