2017-10-18 8 views
1

J'utilise la méthode suivante contrôleurExiste-t-il un moyen de restreindre la taille de Pageable et les valeurs de page transmises à la méthode du contrôleur par Spring?

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

Et évidemment, nous pouvons CONTROLL la page et la taille avec la requête params size et page. Mais disons, nous voulons nous protéger de la perte de la base de données entière dans une page par l'utilisateur ou en raison de la trempe. Y at-il une limite, qui peut être définie sur Objet pageable par exemple. @DefaultPageableConstrains ou je dois valider la taille à la main?

Je voudrais simplement utiliser des mécanismes de validation de printemps comme @Valid@Min ou @Max annotations.

Répondre

2

La valeur par défaut est maxPageSize 2000. Cela peut être outrepassée comme ceci:

@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; 
    } 
} 
+0

C'est quelque chose que j'ai trouvé aussi bien. Peut-être que vous connaîtrez la réponse à ma question de suivi? https://stackoverflow.com/questions/46820935/what-is-happening-with-default-argument-resolver-when-custom-resolver-for-same-t – Antoniossss