【问题标题】:Configure HAL JSON renderer for Grails 2.4.X为 Grails 2.4.X 配置 HAL JSON 渲染器
【发布时间】:2015-03-27 13:30:43
【问题描述】:

我从 Grails 2.4.X 上的 HAL Json 开始。

我看到我必须在 spring 资源中为每个域实体包含 bean 定义,例如:

halClientRenderer(HalJsonRenderer, Client)
halClientCollectionRenderer(HalJsonCollectionRenderer, Client)

我可能想避免这种情况,因为我最终会得到巨大的错误资源文件......是否可以避免这种情况?

【问题讨论】:

    标签: json grails hateoas


    【解决方案1】:

    我已经看到可以使用一些代码来自动注册那些渲染器:

    // register Renderers/CollectionRenderers for all domain classes in the application.
    for (domainClass in grailsApplication.domainClasses) {
        "json${domainClass.shortName}CollectionRenderer"(JsonCollectionRenderer, domainClass.clazz)
        "json${domainClass.shortName}Renderer"(JsonRenderer, domainClass.clazz)
        "hal${domainClass.shortName}CollectionRenderer"(HalJsonCollectionRenderer, domainClass.clazz)
        "hal${domainClass.shortName}Renderer"(HalJsonRenderer, domainClass.clazz)
    } 
    

    见于Render metadata for pagination from Grails RestfulController index/search actions

    【讨论】:

      【解决方案2】:

      一般来说,这是处理注册自定义渲染的正确方法。它可能看起来很容易出现问题并导致Resources.groovy 文件很大,但如果您有大量文件,您可能需要考虑创建一些东西来管理它们,例如使用工厂 bean/模式。

      这个blog post 可能会给您一些额外的想法,因为它演示了使用单个类来收集各个渲染并提供一个点来执行从您的 Spring 上下文中注册它们。

      【讨论】:

        猜你喜欢
        • 2017-06-05
        • 2015-11-09
        • 2011-05-17
        • 2012-03-27
        • 2014-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多