Je veux limiter la valeur de la taille paginable maximale à 10 (valeur par exemple) et je peux le faire comme ça:Que se passe-t-il avec le résolveur d'arguments par défaut lorsque le résolveur personnalisé pour le même type est ajouté?
@Configuration
public class MvcConfiguration extends WebMvcConfigurerAdapter {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
super.addArgumentResolvers(argumentResolvers);
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
resolver.setMaxPageSize(10);
argumentResolvers.add(resolver);
}
}
et delcare méthode du contrôleur comme celui-ci
@RequestMapping(name = "list")
public String listUsers(@PageableDefault(size = 5, page = 0) Pageable pageable) {
En effet, cela fonctionnera , Je ne serai pas en mesure de définir la taille de la page à> 10, mais je suis curieux de savoir pourquoi? Qu'est-ce qui arrive au printemps créé PageableHandlerMethodArgumentResolver
? Pourquoi cette instance est prise en compte et non celle par défaut? Après tout, je ne remplace pas les résolveurs ici, en ajoutant seulement un nouveau.
Le 'HandlerMethodArgumentResolver' qui retourne' true' sur les 'supports (MethodParameter)' est utilisé pour résoudre le paramètre de la méthode. Si ce que vous avez ajouté renvoie 'true', c'est celui utilisé même si l'autre résolveur le supporte. Il doit y avoir quelque chose d'autre qui se passe ici, les résolveurs ajoutés par l'utilisateur peuvent être prioritaires ou Spring n'ajoute plus ses résolveurs prédéfinis si un résolveur du même type existe mais avec cela je ne suis pas sûr. Un seul résolveur fonctionne sur tous les paramètres de la méthode. –