通過(guò)實(shí)現(xiàn)HandlerMethodArgumentResolver
接口虹统,幫助分頁(yè)查詢接口自動(dòng)注入分頁(yè)參數(shù)看蚜,同時(shí)可以進(jìn)行入?yún)⑿r?yàn)氮墨,自動(dòng)賦予默認(rèn)值
@Slf4j
@Component
public class PaginationArgumentResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter methodParameter) {
String paramName = methodParameter.getParameterName();
//參數(shù)類型是不是整型糯累,并且參數(shù)名稱是page
return Integer.class.isAssignableFrom(methodParameter.getParameterType())
&& (StatusConstans.PAGE.equals(paramName) || StatusConstans.ROWS.equals(paramName));
}
@Override
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer,
NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
String paramName = methodParameter.getParameterName();
String paramValue = ((HttpServletRequest) nativeWebRequest.getNativeRequest()).getParameter(paramName);
if (StatusConstans.ROWS.equals(paramName)) {
try{
int rows = Integer.parseInt(paramValue);
return rows < 0 ? 10 : rows;
}catch (NumberFormatException e){
log.error("解析row參數(shù)失敾链铩:" + paramValue);
return 10;
}
}
if (StatusConstans.PAGE.equals(paramName)) {
try{
int page = Integer.parseInt(paramValue);
return Math.max(page, 0);
}catch (NumberFormatException e){
log.error("解析page參數(shù)失斣诹尽:" + paramValue);
return 0;
}
}
return null;
}
}