Pageable
にprivate static final Sort sortById = new Sort(Sort.Direction.DESC, ID);
を追加する必要があります。これを行う最善の方法は、SortArgumentResolver
のデコレータ/アダプタを作成することです。デフォルトのSortArgumentResolverを置き換える方法
私は、クラスを作成しました:
public class IdSortArgumentResolver implements SortArgumentResolver {
private static final String ID = "id";
private static final Sort sortById = new Sort(Sort.Direction.DESC, ID);
private final SortArgumentResolver delegate;
public IdSortArgumentResolverAdapter(SortArgumentResolver delegate) {
this.delegate = delegate;
}
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
return delegate.supportsParameter(methodParameter);
}
@Override
public Sort resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
Sort sort = delegate.resolveArgument(parameter, mavContainer, webRequest, binderFactory);
if (isNull(sort)) {
return sortById;
}
if (containsSortById(sort)) {
return sort;
}
return sort.and(sortById);
}
private static boolean containsSortById(Sort currentSort) {
return StreamSupport.stream(currentSort.spliterator(), false)
.anyMatch(order -> ID.equalsIgnoreCase(order.getProperty()));
}
}
私はIdSortArgumentResolver
にデフォルトSortArgumentResolver
を変更するにはどうすればよいですか?出来ますか?または多分それを行うには良い方法があります...それはspring-boot 1.5.2 RELEASE
と現在のSortHandlerMethodArgumentResolver
だ
P.SがSpringDataWebConfiguration