我有一个场景,我需要有JsonViews,可以按如下所示完成:
@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
答案 0 :(得分:1)
现在这是不可能的,因为following PR仍然是开放的。 你必须等到它得到解决。
<小时/> 编辑:
你也可以使用Jackson Mixins。这是我用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();
}
你必须在某处注册这样的mixin。我使用了Spring Boot:
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder(){
Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
builder.mixIn(Resource.class, ResourceMixin.class);
return builder;
}