2014-09-29 3 views
1

У меня есть класс Grails домена, который выглядит как этотВложенные объекты в Grails с HAL визуализатора

class Thing { 
    String name 
    static hasMany = [ 
    variants: Variant 
    ] 
} 

и другой, как этот

class Variant { 
    String name 
    static belongsTo = [ 
    thing: Thing 
    ] 
} 

Я пытаюсь получить HAL рендерер сделайте глубокую визуализацию.

Возможно ли это? Как мне это достичь?

+0

Мне жаль, что у меня не было ответа, потому что мне было интересно то же самое. Я возился с расширением HalJsonRenderer и HalJsonCollectionRenderer, и предположительно я мог использовать некоторые Reflection для выбора списков и их рендеринга. Честно говоря, я хочу представить дочернюю коллекцию в качестве URL-адреса. Например, если я получаю комментарии в блоге, он просто вернет ссылку, например blog/1/comments. – deusprogrammer

+0

Что-то новое об этом? ... im в такой же ситуации и не может понять, как это исправить. – Rafael

ответ

0

Такая же проблема здесь, кажется, известная ошибка в Грааль (https://jira.grails.org/browse/GRAILS-10954)

Существует а (не очень хорошо) обходной путь,

@Transactional(readOnly = true) 
class ProductController extends RestfulController { 
    def halPCollectionRenderer 
    def halPRenderer 

    static responseFormats = ['hal','json'] 

    ProductController() { 
     super(Product) 
    } 

    @PostConstruct 
    void init() { 
     halPCollectionRenderer.mappingContext = mappingContext 
     halPRenderer.mappingContext = mappingContext 
    } 

    MappingContext getMappingContext() { 
     final context = new KeyValueMappingContext("") 
     context.addPersistentEntity(Product) 
     context.addPersistentEntity(Category) 
     return context 
    } 
} 

Надеется, что это помогает.

+0

Кстати, это не работает для меня ни :( – Rafael