2016-10-14 4 views
0

У меня есть сценарий, где мне нужно иметь JsonViews, которые можно сделать, как показано ниже:Как межтереть @JsonView и HATEOAS весной

@JsonView(Institution.InstitutionView.class) 
@GetMapping 
Page<Institution> getInstitutions( 
    @PageableDefault(sort = "institutionName") Pageable pageable) { 
     return institutionService.fetchSortedInstitutions(pageable); 
} 

Однако, текущая реализация с использованием страничный ресурсов, как это:

@GetMapping 
PagedResources<InstitutionResource> getInstitutions(
    @PageableDefault(sort = "institutionName") Pageable pageable, 
    PagedResourcesAssembler<Institution> pagedResourcesAssembler){ 
    return pagedResourcesAssembler.toResource(
     this.institutionService.fetchSortedInstitutions(pageable), 
     new InstitutionResourceAssembler()); 
} 

Как я могу объединить две реализации? В принципе, как использовать @JsonViews и HATEOAS

ответ

1

Сейчас это невозможно, потому что following PR по-прежнему открыт. Вам нужно подождать, пока оно не будет разрешено.


Отредактировано:

Вы также можете использовать Jackson Примеси для этого. Вот мой пример для упаковки какого-либо объекта с классом HATEOAS ресурсов:

public abstract class ResourceMixin { 
    @JsonView(CustomView.class) 
    public abstract List<Link> getLinks(); 

    @JsonView(CustomView.class) 
    public abstract Link getLink(String rel); 

    @JsonView(CustomView.class) 
    public abstract Object getContent(); 
} 

Вы должны зарегистрировать такую ​​подмешать где-то. Я использовал Spring Boot для этого:

Смежные вопросы