1、自定义注解:
@Target({ ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface QueryParam{ String value() default ""; }
2、自定义参数类型,利用javaBean接受
public class QueryBean { private Page page = new Page(); /** * 排序 */ private Sort[] sorts; /** * 查询参数 */ private Map<String, Object> paraMap; private Map<String,String> sortDirection; }
3、自定义参数解析器,实现HandlerMethodArgumentResolver接口
public class QueryBeanModelMethodProcessor implements HandlerMethodArgumentResolver { public QueryBeanModelMethodProcessor() { } @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest request, WebDataBinderFactory binderFactory) throws Exception { // TODO Auto-generated method stub HttpServletRequest nativeRequest = (HttpServletRequest) request.getNativeRequest(); return QueryBeanUtil.parseParameter(nativeRequest); } @Override public boolean supportsParameter(MethodParameter parameter) { // TODO Auto-generated method stub if (parameter.hasParameterAnnotation(QueryParam.class)) { return true; } return false; } }
4、在xml中注入
<mvc:annotation-driven> <mvc:argument-resolvers> <bean class="com.xxx.xx.QueryParam"></bean> </mvc:argument-resolvers> </mvc:annotation-driven>