为什么我的Pageable API无法使用Spring MVC?

时间:2017-03-21 21:07:11

标签: spring spring-mvc spring-boot spring-restcontroller

我正在实现一个正常工作的API,但是当我使用pagitation时,这不会返回任何内容。

我有我的存储库的下一个代码:

public interface VinetaRepository extends JpaRepository<Vineta, Long> {
List<Vineta> findAllByOrderByCreationdateDesc();
List<Vineta> findByTitulo(String titulo);}

并且,当我使用下一个RequestMapping everthings时可以:

@JsonView(VinetaView.class)
@RequestMapping("/api/vinetas2/")
public List<Vineta> getvinetas2(){
    return this.vinetarepository.findAll();
}

但是,当我使用分页时,我的api会返回任何内容:

@JsonView(VinetaView.class)
@RequestMapping(value = "/api/vinetaspage/", method= RequestMethod.GET)
public Page<Vineta> getvinetaspage(Pageable page ){
    //This System.out print all the size of my repository
    System.out.println(this.vinetarepository.findAll().size());
    //This for print the title for my 20 first objects Vineta
    for(Vineta v:this.vinetarepository.findAll(page)){
        System.out.println(v.getTitulo());
    }
    // This print 20
    System.out.println(this.vinetarepository.findAll(page).getSize());
    //This print the page number = 0 
    System.out.println(page.getPageNumber());
    //This print the page size = 20 
    System.out.println(page.getPageSize());

    //Finally, this is not returning nothing
    return vinetarepository.findAll(page);
}

系统输出后,我可以看到我的查询大小正确(20),但没有任何回复。

这两个函数都使用相同的Jsonview,因此丢弃了这个问题。

1 个答案:

答案 0 :(得分:0)

由于页面界面可能缺少功能,因此需要一个适配器类(如PageWrapper)来包装Spring Data Page接口。

public class PageWrapper {

}