Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Spring Data Core的PagedResourcesAssembler生成HATEOAS链接_Java_Spring_Spring Data_Spring Data Jpa_Spring Hateoas - Fatal编程技术网

Java 使用Spring Data Core的PagedResourcesAssembler生成HATEOAS链接

Java 使用Spring Data Core的PagedResourcesAssembler生成HATEOAS链接,java,spring,spring-data,spring-data-jpa,spring-hateoas,Java,Spring,Spring Data,Spring Data Jpa,Spring Hateoas,在Spring数据JPA中,它解释了如何使用PagedResourcesAssembler生成链接。该文档引用了一个toResources方法,但据我所知,该方法并不存在。我已经成功地为资源集合生成了链接,但是我不知道如何为子资源生成链接 这是我的控制器: public HttpEntity<PagedResources<Party>> search(@RequestBody PartySearchRequest request,

在Spring数据JPA中,它解释了如何使用PagedResourcesAssembler生成链接。该文档引用了一个toResources方法,但据我所知,该方法并不存在。我已经成功地为资源集合生成了链接,但是我不知道如何为子资源生成链接

这是我的控制器:

public HttpEntity<PagedResources<Party>> search(@RequestBody PartySearchRequest request,
                                                    Pageable pageable, PagedResourcesAssembler<Party> assembler ) {

        Map<String,String> searchFilters = RequestValidator.validateContractSearchFilters(request);

        Page<Party> parties = repository.findByFirstNameOrLastName(searchFilters.get("firstName"), searchFilters.get("lastName"), pageable);

        return new ResponseEntity(assembler.toResource(parties), HttpStatus.OK);

    }
private final MyResourceAssembler myResourceAssembler;

public MyController(MyResourceAssembler myResourceAssembler) {
   this.myResourceAssembler = myResourceAssembler;
}

public HttpEntity<PagedResources<Party>> search(@RequestBody PartySearchRequest request,
                                                Pageable pageable, PagedResourcesAssembler<Party> assembler ) {

    Map<String,String> searchFilters = RequestValidator.validateContractSearchFilters(request);

    Page<Party> parties = repository.findByFirstNameOrLastName(searchFilters.get("firstName"), searchFilters.get("lastName"), pageable);

    Link selfLink = linkTo(methodOn(this.getClass().view(pageable, null)).withSelfRel();

    return new ResponseEntity(assembler.toResource(parties, myResourceAssembler, selfLink), HttpStatus.OK);

}
如您所见,我获得了整个party搜索的链接,但没有获得单个party对象的链接。我想我的问题类似于这个问题:但我不太确定,所以我发布了我自己的问题


任何帮助都将不胜感激!谢谢大家!

您需要对扩展的类的引用

这应该是可行的,将myResourceAssembler更改为您的类:

在控制器中:

public HttpEntity<PagedResources<Party>> search(@RequestBody PartySearchRequest request,
                                                    Pageable pageable, PagedResourcesAssembler<Party> assembler ) {

        Map<String,String> searchFilters = RequestValidator.validateContractSearchFilters(request);

        Page<Party> parties = repository.findByFirstNameOrLastName(searchFilters.get("firstName"), searchFilters.get("lastName"), pageable);

        return new ResponseEntity(assembler.toResource(parties), HttpStatus.OK);

    }
private final MyResourceAssembler myResourceAssembler;

public MyController(MyResourceAssembler myResourceAssembler) {
   this.myResourceAssembler = myResourceAssembler;
}

public HttpEntity<PagedResources<Party>> search(@RequestBody PartySearchRequest request,
                                                Pageable pageable, PagedResourcesAssembler<Party> assembler ) {

    Map<String,String> searchFilters = RequestValidator.validateContractSearchFilters(request);

    Page<Party> parties = repository.findByFirstNameOrLastName(searchFilters.get("firstName"), searchFilters.get("lastName"), pageable);

    Link selfLink = linkTo(methodOn(this.getClass().view(pageable, null)).withSelfRel();

    return new ResponseEntity(assembler.toResource(parties, myResourceAssembler, selfLink), HttpStatus.OK);

}
工具书类
非常感谢。我创建了PartyResourcesAssembler extends ResourceAssembler支持,但在注入它时遇到问题。我用的是弹簧靴。有什么快速的建议吗?谢谢,它是用@Component注释的吗?愚蠢的错误:现在它自动连线了。因此,如果我理解正确,ResourceAssemblerSupport负责每个单独的资源链接,PagedResourcesAssembler负责整个资源?正确,您返回的资源是资源的集合。集合本身就是一个资源,它包含嵌入嵌套集合的_。每个嵌套集合项都是一个单独的资源,具有自己的链接集。PagedResourcesAssembler处理诸如prev/next links.Yup之类的事情。我把一切都搞定了。唯一的问题是,现在我必须为每个实体创建一个资源,然后为每个资源创建一个汇编程序。很多额外的课程。。。关于如何不必为每个实体创建汇编程序和资源,有什么建议吗?谢谢你的帮助。