spring mvc 使用 customArgumentResolvers 自定义注解式参数解析

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

RequestMappingHandlerAdapter 下的 customArgumentResolvers 是用来解析来自客户端的数据

在这里我们可以添加自己的解析方式下面是定义的步骤

 

1.实现一个自定义的参数解析器,必须实现 HandlerMethodArgumentResolver 类

public class UserArgumentResolver implements HandlerMethodArgumentResolver {

@Override

public boolean supportsParameter(MethodParameter parameter) {

                    //对要解析的参数进行判断,是否需要此解析器

return parameter.hasParameterAnnotation(User.class);

}

@Override

public Object resolveArgument(MethodParameter parameter,

ModelAndViewContainer mavContainer, NativeWebRequest webRequest,

WebDataBinderFactory binderFactory) throws Exception {

               //取得参数中的注解对象,也可以取得方法的注解对象

User u =parameter.getParameterAnnotation(User.class);

String paramName =u.value();

Object result = webRequest.getParameter(paramName);

if(result==null){

result = webRequest.getAttribute(paramName,RequestAttributes.SCOPE_SESSION);

}

return result;

}

}

2.

加入customArgumentResolvers  中




     




     



附加:


import java.lang.annotation.Documented;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;



@Target(ElementType. PARAMETER)

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface User {

     String value ();

}

 

转载于:https://my.oschina.net/u/2552286/blog/1572426

你可能感兴趣的:(spring mvc 使用 customArgumentResolvers 自定义注解式参数解析)