有没有办法限制Spring传递给控制器​​方法的Pageable的大小和页面值?

时间:2017-10-18 21:56:48

标签: spring spring-mvc

我正在使用以下控制器方法

public String listUsers(@PageableDefault(size = 20, page = 0) Pageable pageable)

显然,我们可以使用查询参数sizepage来控制页面和大小。但是,让我们说,我们希望保护自己不要将整个数据库倾倒在一个用户页面或由于回火。是否有限制,可以设置为Pageable对象,例如。 @DefaultPageableConstrains或者我必须手工验证尺寸?

我只想使用像@Valid @Min@Max注释这样的Spring验证机制。

1 个答案:

答案 0 :(得分:3)

默认的maxPageSize是2000.可以像这样重写:

@Configuration
public class PaginationConfiguration extends SpringDataWebConfiguration {
    private final int MAX_PAGE_SIZE = 200;

    @Bean
    @Override
    public PageableHandlerMethodArgumentResolver pageableResolver() {
        PageableHandlerMethodArgumentResolver pageableHandlerMethodArgumentResolver =
            new PageableHandlerMethodArgumentResolver(sortResolver());

        pageableHandlerMethodArgumentResolver.setMaxPageSize(MAX_PAGE_SIZE);

        return pageableHandlerMethodArgumentResolver;
    }
}