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

spring mvc使用@InitBinder标签对表单数据绑定的方法

程序员文章站 2024-01-21 14:13:34
在springmvc中,bean中定义了date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定。 解决的办法就是使用spring mvc提供...

在springmvc中,bean中定义了date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定。

解决的办法就是使用spring mvc提供的@initbinder标签

在我的项目中是在basecontroller中增加方法initbinder,并使用注解@initbinder标注,那么spring mvc在绑定表单之前,都会先注册这些编辑器,当然你如果不嫌麻烦,你也可以单独的写在你的每一个controller中。剩下的控制器都继承该类。spring自己提供了大量的实现类,诸如customdateeditor ,custombooleaneditor,customnumbereditor等许多,基本上够用。

当然,我们也可以不使用他自己自带这些编辑器类,那下面我们自己去构造几个

import org.springframework.beans.propertyeditors.propertieseditor;  
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();  
  }  
}  
import org.springframework.beans.propertyeditors.propertieseditor; 
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();  
  }  
}  
import org.springframework.beans.propertyeditors.propertieseditor;  
public class floateditor extends propertieseditor {  
  @override  
  public void setastext(string text) throws illegalargumentexception {  
    if (text == null || text.equals("")) {  
      text = "0";  
    }  
    setvalue(float.parsefloat(text));  
  }  
  
  @override  
  public string getastext() {  
    return getvalue().tostring();  
  }  
}  
import org.springframework.beans.propertyeditors.propertieseditor; 
public class longeditor extends propertieseditor {  
  @override  
  public void setastext(string text) throws illegalargumentexception {  
    if (text == null || text.equals("")) {  
      text = "0";  
    }  
    setvalue(long.parselong(text));  
  }  
  
  @override  
  public string getastext() {  
    return getvalue().tostring();  
  }  
} 

在basecontroller中

@initbinder  
  protected void initbinder(webdatabinder binder) {  
    binder.registercustomeditor(date.class, new customdateeditor(new simpledateformat("yyyy-mm-dd hh:mm:ss"), true));  
/    binder.registercustomeditor(int.class, new customnumbereditor(int.class, true));  
    binder.registercustomeditor(int.class, new integereditor());  
/    binder.registercustomeditor(long.class, new customnumbereditor(long.class, true)); 
    binder.registercustomeditor(long.class, new longeditor());  
    binder.registercustomeditor(double.class, new doubleeditor());  
    binder.registercustomeditor(float.class, new floateditor());  
  }  

复制代码 代码如下:

public class org.springframework.beans.propertyeditors.propertieseditor extends java.beans.propertyeditorsupport { 

看到没?如果你的编辑器类直接继承propertyeditorsupport也可以。

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