欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SpringMVC中利用@InitBinder来对页面数据进行解析绑定的方法

程序员文章站 2022-05-03 10:26:19
在使用spingmvc框架的项目中,经常会遇到页面某些数据类型是date、integer、double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据,如果这类数据...

在使用spingmvc框架的项目中,经常会遇到页面某些数据类型是date、integer、double等的数据要绑定到控制器的实体,或者控制器需要接受这些数据,如果这类数据类型不做处理的话将无法绑定。

这里我们可以使用注解@initbinder来解决这些问题,这样spingmvc在绑定表单之前,都会先注册这些编辑器。一般会将这些方法些在basecontroller中,需要进行这类转换的控制器只需继承basecontroller即可。其实spring提供了很多的实现类,如customdateeditor、custombooleaneditor、customnumbereditor等,基本上是够用的。

demo如下:

public class basecontroller {

  @initbinder
  protected void initbinder(webdatabinder binder) {
    binder.registercustomeditor(date.class, new mydateeditor());
    binder.registercustomeditor(double.class, new doubleeditor()); 
    binder.registercustomeditor(integer.class, new integereditor());
  }

  private class mydateeditor extends propertyeditorsupport {
    @override
    public void setastext(string text) throws illegalargumentexception {
      simpledateformat format = new simpledateformat("yyyy-mm-dd hh:mm:ss");
      date date = null;
      try {
        date = format.parse(text);
      } catch (parseexception e) {
        format = new simpledateformat("yyyy-mm-dd");
        try {
          date = format.parse(text);
        } catch (parseexception e1) {
        }
      }
      setvalue(date);
    }
  }
  
  public class doubleeditor extends propertieseditor {  
    @override  
    public void setastext(string text) throws illegalargumentexception {  
      if (text == null || text.equals("")) {  
        text = "0";  
      }  
      setvalue(double.parsedouble(text));  
    }  
    
    @override  
    public string getastext() {  
      return getvalue().tostring();  
    }  
  } 
  
  public class integereditor extends propertieseditor {  
    @override  
    public void setastext(string text) throws illegalargumentexception {  
      if (text == null || text.equals("")) {  
        text = "0";  
      }  
      setvalue(integer.parseint(text));  
    }  
    
    @override  
    public string getastext() {  
      return getvalue().tostring();  
    }  
  } 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。