@InitBinder
@InitBinder
是Spring MVC提供的一个注解,主要用于自定义请求参数的绑定规则。它可以:
- 注册自定义的编辑器
- 设置必填字段
- 设置允许的字段
- 设置日期格式等
@InitBinder的value参数
@InitBinder
的value参数用于指定这个绑定器要作用的目标对象。有以下几种使用方式:
// 1. 不指定value,对所有请求参数生效
@InitBinder
public void initBinder(WebDataBinder binder) {
// ...
}
// 2. 指定具体的参数名称,只对该参数生效
@InitBinder("user")
public void initUser(WebDataBinder binder) {
// 只对名为"user"的参数生效
}
// 3. 指定多个参数名称
@InitBinder({"user", "admin"})
public void initUsers(WebDataBinder binder) {
// 对名为"user"和"admin"的参数都生效
}
// 4. 指定ModelAttribute注解的对象
@InitBinder("getAllCompetitionsReq")
public void initGetAllCompetitionsReq(WebDataBinder binder) {
// 对@ModelAttribute标注的GetAllCompetitionsReq类型参数生效
}
常见使用场景
- 日期格式转换:
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
- 字符串去空格:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
- 设置允许的字段:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setAllowedFields("username", "email"); // 只允许这些字段被绑定
}
- 设置必填字段:
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setRequiredFields("username", "password"); // 这些字段必须填写
}