java – 使用Spring Data Rest公开集合??上的超媒体链接,即使它
发布时间:2020-12-15 03:08:01 所属栏目:Java 来源:网络整理
导读:首先,我读了上一个问题: Exposing link on collection entity in spring data REST 但问题仍然存在,没有诡计. 实际上,如果我想公开集合资源的链接,我正在使用以下代码: @Componentpublic class FooProcessor implements ResourceProcessorPagedResourcesRe
首先,我读了上一个问题:
Exposing link on collection entity in spring data REST
但问题仍然存在,没有诡计. 实际上,如果我想公开集合资源的链接,我正在使用以下代码: @Component public class FooProcessor implements ResourceProcessor<PagedResources<Resource<Foo>>> { private final FooLinks fooLinks; @Inject public FooProcessor(FooLinks fooLinks) { this.FooLinks = fooLinks; } @Override public PagedResources<Resource<Foo>> process(PagedResources<Resource<Foo>> resource) { resource.add(fooLinks.getMyCustomLink()); return resource; } } 这是正常的,除非收集是空的… 唯一可行的方法是将以下代码替换为: @Component public class FooProcessor implements ResourceProcessor<PagedResources> { private final FooLinks fooLinks; @Inject public FooProcessor(FooLinks fooLinks) { this.FooLinks = fooLinks; } @Override public PagedResources process(PagedResources resource) { resource.add(fooLinks.getMyCustomLink()); return resource; } } 但通过这样做,链接将暴露给所有集合. 我可以创造条件只暴露我想要的但我认为不干净. 解决方法
我认为Spring在尝试发现集合的类型时会有一些魔力 – 在空集合上你无法分辨它是什么类型 – 所以spring-data-rest无法确定使用哪个ResourceProcessor.
我想我已经看过了 if (content.isEmpty()) { return false; } 所以我认为你无法使用spring-data-rest来解决这个问题.对于您的控制器,您可以回退编写自定义控制器并使用spring hateoas并实现您自己的ResourceAssemblerSupport以查看空集合上的链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |