springmvc @InitBinder 注解
-
@InitBinder
用法类型转换,将前台传递的String类型表示的其他类型参数进行转换(例如Date)参数
用法:
1.initBinder 注解的参数返回值必须时void
2.注解的方法参数类型一般时WebDataBinder
3.在requestMapping 注解的方法直接引入需要的类型而前台传递的是String类型需要解析的时候,就可以在外部添加一个用@InitBinder 注解的方法,传入WebDataBinder 参数,用来解析
例如:
@Controller
public class FirstController {
/**
*
* @param binder
*/
@InitBinder
public void initBinder(WebDataBinder binder){
binder.registerCustomEditor(Date.class,new MyDateEditor());
System.out.println("===============11111");
}
@RequestMapping("/first.do")
//类型转化工作一定是在真正的handler方法执行前执行的。
public String doFirst(Date birthday,int age) throws Exception{
System.out.println(birthday+"===============");
System.out.println(age+"===============");
return "/WELCOME.jsp";
}
}
- 说明:
1.前台传递过来birthday 参数是String类型的,而这里路径映射的方法的参数是Date类型,因此如果不进行转换,就会出异常,
2.而此时在类中配置一共@InitBinder注解的方法,在里面设置转换器,Spring 在访问方法的时候,就会自动将配置的类型转换为需要的类型
- 还可与 @ControllerAdvice 配合配置 全局的参数绑定