如何在Spring启动应用程序中配置PageableHandlerMethodArgumentResolver

Muh*_*edy 9 java spring spring-boot

我有一个Spring启动应用程序,我想配置PageableHandlerMethodArgumentResolver,我尝试以下代码,但不起作用:

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    // .......

    @Override
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
        resolver.setFallbackPageable(new PageRequest(0, 50));
        argumentResolvers.add(resolver);
        super.addArgumentResolvers(argumentResolvers);
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器方法:

@Override
@PreAuthorize("hasRole('ROLE_SYS_ADMIN')")
@RequestMapping(method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Page<Account>> query(@QuerydslPredicate Predicate predicate,
        @PageableDefault Pageable pageable) {
    return new ResponseEntity<>(accountRepo.findAll(predicate, pageable), HttpStatus.OK);
}
Run Code Online (Sandbox Code Playgroud)

它是一个简单的启动应用程序,只需使用Spring Empty WebConfig Configuration类进行Spring启动

@Configuration
public class WebConfig {

    @Bean
    public Filter html5ModeFilter() {
        return new Html5ModeFilter();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的配置类列表:

Html5ModeFilter.java
SecurityConfig.java
ServletInitializer.java
UserDetailsAdapter.java
WebConfig.java
Run Code Online (Sandbox Code Playgroud)

Ali*_*ani 5

@PageableDefault从中删除:

public ResponseEntity<Page<Account>> query(..., @PageableDefault Pageable pageable) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

PageableDefault 批注如下所示:

public @interface PageableDefault {
    int value() default 10;
    int size() default 10;
    int page() default 0;
    ...
} 
Run Code Online (Sandbox Code Playgroud)

这些default值将覆盖您的后备值,您将看到前十个结果。