• HandlerMethodArgumentResolver 参数解析器


    关于springMvc中的参数解析器 

     springMvc中的HandlerAdapter会检测所有的 HandlerMethodArgumentResolver(对参数的解析器)

     HandlerMethodArgumentResolver接口包含两个接口方法 

    1
    boolean supportsParameter(MethodParameter parameter);

       MethodParameter方法参数对象 通过它可以获取该方法参数上的一些信息 如方法参数中的注解信息等

       通过该方法我们如果需要对某个参数进行处理  只要此处返回true即可 如对Date类型数据处理的话

       Class  parameterType=parameter.getParameterType(); 

    return parameterType.equals(Date.class); 

     另一个为   

    1
    2
    3
    4
    Object resolveArgument(MethodParameter parameter,
                               ModelAndViewContainer mavContainer,
                               NativeWebRequest webRequest,
                               WebDataBinderFactory binderFactory) throws Exception;

    该方法就是对参数的解析,返回的Object会自动赋值到参数对象中

      

      

    实例:  自定义一个日期处理注解,通过一个HandlerMethodArgumentResolver来解析

    第一步:为HandlerAdapter配置一个自定义的HandlerMethodArgumentResolver   

    1
    2
    3
    4
    5
    <mvc:annotation-driven conversion-service="conversionService">
            <mvc:argument-resolvers>
              <bean class="com.car.admin.controller.CustomerHandlerMethodArgumentResolver"></bean>
            </mvc:argument-resolvers>
     </mvc:annotation-driven>

      

    第二步:定义一个日期注解

    1
    2
    3
    4
    5
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.PARAMETER)
    public @interface CustomerDate {
        String value();
    }

     

    第三步: 实现HandlerMethodArgumentResolver

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public class CustomerHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
     
        public Object resolveArgument(MethodParameter parameter,
                ModelAndViewContainer mavContainer, NativeWebRequest webRequest,
                WebDataBinderFactory binderFactory) throws Exception {
     
            Annotation[]  methodAnnotations= parameter.getParameterAnnotations();
            for(Annotation  annotation:methodAnnotations){
                if(annotation instanceof CustomerDate){
                    CustomerDate  customerDate=(CustomerDate)annotation;
                    String dataStringValue=customerDate.value();
                    SimpleDateFormat  formater=new SimpleDateFormat("yyyy-MM-dd HH:mm");
                    return  formater.parse(dataStringValue);
                }
            }
            return null;
        }
     
        @SuppressWarnings("unchecked")
        public boolean supportsParameter(MethodParameter parameter) {
            Class  parameterType=parameter.getParameterType();
            return parameterType.equals(Date.class);
        }
     
    }

    第四步: 控制器处理    

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @RequestMapping("/user_list")
        @ResponseBody
        public Map <String,Object> userList(@CustomerDate(value = "2015-02-01 03:55") Date date,HttpServletRequest  request,@PageableDefault(page=0,size=10)  Pageable pageable,Model modelMap) {
            Map<String,String[]>  params=HttpUtils.getParameterValuesMap(request,Constants.SEARCH_PREFIX);
            Page<User>  userPage=userService.findPage(pageable,params);
            Map<String,Object>   results=new  HashMap<String,Object> ();
            results.put("total", userPage.getTotalElements());
            results.put("rows", userPage.getContent());
            return results;
        }      


    通过上面的处理:     通过CustomerDate 注解 我们可以通过value来制定具体的日期,并且会自动为date赋值,通过此小例子我们可以引申出各种实现

       转自 https://www.cnblogs.com/coollijie/p/4244003.html

  • 相关阅读:
    convert image to base64 and post to RESTful wcf
    在android webview实现截屏的手动tounchmove裁剪图片
    How to use jquery ajax and android request security RESTful WCF
    using swfUpload in asp.net mvc
    using HttpClient and sending json data to RESTful server in adroind
    ODP.NET数据访问
    android image watermark
    解决国内不能访问github的问题
    idapro权威指南第二版阅读笔记第九章 交叉引用和绘图功能
    idapro权威指南第二版阅读笔记第二章 逆向和反汇编工具
  • 原文地址:https://www.cnblogs.com/tiancai/p/8427540.html
Copyright © 2020-2023  润新知