zoukankan      html  css  js  c++  java
  • SpringMVC@InitBinder使用方法

    在实际操作中经常会碰到表单中的日期 字符串和Javabean中的日期类型的属性自动转换, 而springMVC默认不支持这个格式的转换,所以必须要手动配置, 自定义数据类型的绑定才能实现这个功能。

    比较简单的可以直接应用springMVC的注解@initbinder和spring自带的WebDataBinder类和操作。

    解决一种类型

    @InitBinder//默认
        public void resolveException(WebDataBinder webDataBinder) {
           //设置转换格式
           SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
           //参数一:转换格式      参数二:是否允许为空字符串
           webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(sdf,true));
        }
    
        @RequestMapping("/first")
        public String doFirst(String username, int age, Date birthday) throws Exception {
            //打印转换字符信息
            System.out.println(username);
            System.out.println(age);
            System.out.println(birthday);
            return "doSecond";
        }
    

    自定义属性编辑器

    创建类继承PropertiesEditor(属性编辑器)

    //自定义属性编辑器
    public class MultiController extends PropertiesEditor {
        //手动重写setAsTest方法
        @Override
        public void setAsText(String str) throws IllegalArgumentException {
            //匹配格式
            SimpleDateFormat sdf=getDateFormat(str);
            try {
                //转换Date类型
                Date parse = sdf.parse(str);
                setValue(parse);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        
    
        private SimpleDateFormat getDateFormat(String str){
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
            if(Pattern.matches("^\d{4}-\d{1,2}-\d{1,2}$",str)){
                sdf=new SimpleDateFormat("yyyy-MM-dd");
            }
            if(Pattern.matches("^\d{4}/\d{1,2}/\d{1,2}$",str)){
                sdf=new SimpleDateFormat("yyyy/MM/dd");
            }
            if(Pattern.matches("^\d{4}\d{1,2}\d{1,2}$",str)){
                sdf=new SimpleDateFormat("yyyyMMdd");
            }
            return sdf;
        }
    }
    

      

    处理器方法

    @InitBinder//默认
        public void resolveException(WebDataBinder webDataBinder) {
           //设置转换格式
           SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
           //参数一:转换格式      参数二:自定义属性编辑器
           webDataBinder.registerCustomEditor(Date.class,new MultiController());
        }
    
        @RequestMapping("/first")
        public String doFirst(String username, int age, Date birthday) throws Exception {
            //打印转换字符信息
            System.out.println(username);
            System.out.println(age);
            System.out.println(birthday);
            return "doSecond";
        }
    

      

      

  • 相关阅读:
    百度地图根据经纬度计算瓦片行列号
    【完全开源】百度地图Web service API C#.NET版,带地图显示控件、导航控件、POI查找控件
    TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端
    重中之重:委托与事件
    可复用代码:组件的来龙去脉
    [史上最全]C#(VB.NET)中位运算符工作过程剖析(译)
    物以类聚:对象也有生命
    导入导出Android手机文件
    Android修改system只读权限
    SSHDroid(SSH Server for Android)通过PC或命令连接android
  • 原文地址:https://www.cnblogs.com/xuchangqi1/p/8683620.html
Copyright © 2011-2022 走看看