Spring中@initBinder的使用

这一周开发的时候,发现前台的date类型form数据不能传值到controller中的参数中,看到后台提示date类型转换失败。于是我想到以前是加了@initBinder就解决了。于是我就打开了spring的文档,查看了@initBinder

@initBinder可以直接在你的controller中提供数据绑定。initbinder 方法不能有返回值,一般是返回void。下面的例子是给所有的java.util.Date 类型的属性配置一个CustomDateEditor

1
2
3
4
5
6
7
8
9
10
11
12
13
@Controller
public class MyFormController {

@InitBinder
protected void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}

// ...

}

当然,@initBinder还可以配置别的属性编辑器,例如CustomNumberEditor、CustomBooleanEditor等,实现数据绑定。