• @InitBinder的作用


    • 由@InitBinder表示的方法,可以对WebDataBinder对象进行初始化。WebDataBinder是DataBinder的子类,用于完成由表单到JavaBean属性的绑定。
    • @InitBinder方法不能有返回值,它必须盛名为void。
    • @InitBinder方法的参数通常是WebDataBinder,@InitBinder可以对WebDataBinder进行初始化

    在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换,而SpringMVC默认不支持这个格式的转换,所以需要手动配置,自定义数据的绑定才能解决这个问题。
    在需要日期转换的Controller中使用SpringMVC的注解@initbinder和Spring自带的WebDateBinder类来操作。
    WebDataBinder是用来绑定请求参数到指定的属性编辑器.由于前台传到controller里的值是String类型的,当往Model里Set这个值的时候,如果set的这个属性是个对象,Spring就会去找到对应的editor进行转换,然后再SET进去。

    @InitBinder
    public void initBinder(WebDataBinder binder){
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      // 严格限制日期转换
      sdf.setLenient(false);
      //true:允许输入空值,false:不能为空值
      binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
    }

    initBinder方法用在controller类中

    spring mvc在绑定表单之前,都会先注册这些编辑器,Spring自己提供了大量的实现类,诸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等许多,基本上够用。
    使用时候调用WebDataBinder的registerCustomEditor方法
    registerCustomEditor源码:

    public void registerCustomEditor(Class<?> requiredType, PropertyEditor propertyEditor) {
        getPropertyEditorRegistry().registerCustomEditor(requiredType, propertyEditor);
    }

    第一个参数requiredType是需要转化的类型。
    第二个参数PropertyEditor是属性编辑器,它是个接口,以上提到的如CustomDateEditor等都是继承了实现了这个接口的PropertyEditorSupport类。

  • 相关阅读:
    MVC模式简介
    UEditor插入表格没有边框但有间距
    MVC准备前基础知识
    如何关闭ie9烦人的提示信息?
    javaScript中利用ActiveXObject来创建FileSystemObject操作文件
    win7下IIS安装与配置运行网站
    javascript函数
    减小SSN影响
    EMC (电磁兼容性)
    电源完整性设计
  • 原文地址:https://www.cnblogs.com/ngy0217/p/8746766.html
Copyright © 2020-2023  润新知