首页 > 编程 > Java > 正文

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

2019-11-26 10:11:37
字体:
来源:转载
供稿:网友

在使用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();      }    } }

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表