我有一个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);
}
}
控制器方法:
@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);
}
这是一个简单的启动应用程序,只需使用Spring Boot WebConfig配置类进行弹跳启动
@Configuration
public class WebConfig {
@Bean
public Filter html5ModeFilter() {
return new Html5ModeFilter();
}
}
这是我的配置类列表:
Html5ModeFilter.java
SecurityConfig.java
ServletInitializer.java
UserDetailsAdapter.java
WebConfig.java
答案 0 :(得分:4)
从{
>中删除@PageableDefault
public ResponseEntity<Page<Account>> query(..., @PageableDefault Pageable pageable) {
...
}
PageableDefault
注释如下所示:
public @interface PageableDefault {
int value() default 10;
int size() default 10;
int page() default 0;
...
}
这些default
值会覆盖您的后备值,您会看到前十个结果。
答案 1 :(得分:1)
从spring-data-commons
版本2.0
开始,有2个新类可以让这种事情变得更容易:
SortHandlerMethodArgumentResolverCustomizer
PageableHandlerMethodArgumentResolverCustomizer
不幸的是,这不是当前版本的Spring Boot(1.5.9)附带的版本,因此请自行承担风险。
@Bean
PageableHandlerMethodArgumentResolverCustomizer sortCustomizer() {
// s is PageableHandlerMethodArgumentResolver
return p -> p.setFallbackPageable(new PageRequest(0, 50));
}
这只是现在设置后备的替代方法。 @Ali Dehghani的回答仍然适用Default
覆盖Fallback