@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:不能为空值
  isterCustomEditor(Date.class, new CustomDateEditor(sdf, true));
}
initBinder⽅法⽤在controller类中
spring mvc在绑定表单之前,都会先注册这些编辑器,Spring⾃⼰提供了⼤量的实现类,诸如CustomDateEditor
,CustomBooleanEditor,CustomNumberEditor等许多,基本上够⽤。
使⽤时候调⽤WebDataBinder的registerCustomEditor⽅法
registerCustomEditor源码:
public void registerCustomEditor(Class<?> requiredType, PropertyEditor propertyEditor) {
springmvc选择题getPropertyEditorRegistry().registerCustomEditor(requiredType, propertyEditor);
}
第⼀个参数requiredType是需要转化的类型。
第⼆个参数PropertyEditor是属性编辑器,它是个接⼝,以上提到的如CustomDateEditor等都是继承了实现了这个接⼝的PropertyEditorSupport类。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。