我从Grails 2.4.X上的HAL Json开始。
我看到我必须在每个域实体的spring资源中包含bean定义,如:
halClientRenderer(HalJsonRenderer, Client)
halClientCollectionRenderer(HalJsonCollectionRenderer, Client)
我可能想要避免这种情况,因为我最终将获得巨大的错误资源文件...是否有可能避免这种情况?
答案 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上下文中注册它们。