为Grails 2.4.X配置HAL JSON渲染器

时间:2015-03-27 13:30:44

标签: json grails hateoas

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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