zoukankan      html  css  js  c++  java
  • SpringMVC之@initBinder解决类型转换问题

    初始化参数绑定器

    由@InitBinder表示的方法,可以对WebDataBinder对象进行初始化。WebDataBinder是DataBinder的子类,用于完成由表单到JavaBean属性的绑定。

    @InitBinder方法不能有返回值,它必须盛名为void。

    @InitBinder方法的参数通常是WebDataBinder,

    @InitBinder可以对WebDataBinder进行初始化。

    例如:这里可以设置一个从网线打过来的日期  转换成date格式

    @Controller
    public class FirstController {
        @InitBinder
        public void initBinder(WebDataBinder binder){
            DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            binder.registerCustomEditor(Date.class,new CustomDateEditor(sdf,true));
        }
        @RequestMapping("/first")
        public String doFirst(String username, int age, Date birthday){
            System.out.println(username);
            System.out.println(age);
            System.out.println(birthday);
            return "suecssful";
        }
    }

    下边是一个InitBinder的提升版本  上边的代码只能实现一种格式的匹配

    /* 
    * 自定义属性编辑器  继承propertiesEditor
    * */
    public class EditorTest extends PropertiesEditor {
        public Date convert(String str) {
            SimpleDateFormat sdf = getDate(str);
            try {
                return sdf.parse(str);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return  null;
        }
    //通过正则表达式去匹配网线打过来的字符串格式
    public SimpleDateFormat getDate(String str) { SimpleDateFormat sdf=null; if(Pattern.matches("^\d{4}-\d{2}-\d{2}$",str)){ sdf=new SimpleDateFormat("yyyy-MM-dd"); } if(Pattern.matches("^\d{4}/\d{2}/\d{2}$",str)){ sdf=new SimpleDateFormat("yyyy/MM/dd"); } if(Pattern.matches("^\d{4}\d{2}\d{2}$",str)){ sdf=new SimpleDateFormat("yyyyMMdd"); } return sdf; } }

    Controller的书写:

    @Controller
    public class FirstController {
        @InitBinder
        public void initBinder(WebDataBinder binder){
            DateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            binder.registerCustomEditor(Date.class,new CustomDateEditor(sdf,true));
        }
        @RequestMapping("/first")
        public String doFirst(String username, int age, Date birthday){
            System.out.println(username);
            System.out.println(age);
            System.out.println(birthday);
            return "suecssful";
        }
    }
  • 相关阅读:
    一行JS代码实现的滑动门
    一款JS+CSS打造绝对经典的资讯网站滑动门特效
    【荐】JS封装的一个无限级的下拉树形菜单
    JS+CSS实现漂亮实用的红色导航菜单
    JS+CSS仿网易的选项卡TAB标签样式
    JS+CSS实现的不规则TAB选项卡效果
    jQuery仿FLASH响应鼠标滚动的动感菜单
    纯CSS仿迅雷首页的菜单导航代码
    JS+CSS仿雅虎首页网站快捷入口的切换效果
    【荐】Jquery+CSS打造的泡沫弹出框式的侧边蓝色导航菜单
  • 原文地址:https://www.cnblogs.com/1234AAA/p/8683390.html
Copyright © 2011-2022 走看看