为 Grails 2 配置 HAL JSON 渲染器。4.X

Configure HAL JSON renderer for Grails 2.4.X

我开始使用 Grails 2 上的 HAL Json。4.X。

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

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

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

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

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

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

// 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

看到