Spring Data REST返回EmptyCollectionEmbeddedWrapper而不是空集合

时间:2017-08-09 12:05:16

标签: spring spring-data-rest spring-hateoas

我正在开发基于Spring Data REST的服务。我们使用swagger创建前端代码的原因(通过SpringFox生成)我不得不停用HAL格式的返回,只有一个例外,它可以正常工作。

如果请求的结果是空列表,则响应如下所示

{
"links": [
    {
        "rel": "self",
        "href": "http://localhost:9999/users"
    },
    {
        "rel": "profile",
        "href": "http://localhost:9999/profile/users"
    }
],
"content": [
    {
        "rel": null,
        "collectionValue": true,
        "relTargetType": "com.example.User",
        "value": []
    }
]
}

如何将空列表作为内容?

1 个答案:

答案 0 :(得分:0)

我不得不调整先前解决方案中提供的解决方案,以使用Spring HATEOAS 1.x引入的类型。

这是我正在使用的代码:

@Component
public class ResourceProcessorEmpty implements RepresentationModelProcessor<CollectionModel<Object>> {
    @Override
    public CollectionModel<Object> process(CollectionModel<Object> resourceToThrowAway) {
        if (resourceToThrowAway.getContent().size() != 1) {
            return resourceToThrowAway;
        }
        if (!resourceToThrowAway.getContent().iterator().next().getClass().getCanonicalName().contains("EmptyCollectionEmbeddedWrapper")) {
            return resourceToThrowAway;
        }

        CollectionModel<Object> newResource = new CollectionModel<>(Collections.emptyList());
        newResource.add(resourceToThrowAway.getLinks());
        return newResource;
    }
}