在上一章节,SpringBoot2.x系列教程29--整合SpringMVC之@InitBinder处理请求参数的绑定(上)的内容中,我给大家讲解了@InitBinder的原理及使用教程,本章节我继续讲解SpringMVC中的参数传递及数据绑定。
本章节主要是讲解WebDataBinder的内容。
一. WebDataBinder简介
从上面的代码案例中,我们可以看到另一个类,那就是WebDataBinder!
1. WebDataBinder的由来
在servlet中,有一个方法:request.getParameter("paramName"),它会根据key返回一个String类型的数据。
但是如果我们这样一个一个地去取出web中的请求参数,那就会很麻烦。我们知道Java中有对象的概念,那有没有办法将request中的请求参数自动封装到一个Java对象中呢? 为了解决这个问题,Spring中引入了WebDataBinder。
2. WebDataBinder类关系
3. WebDataBinder的作用
WebDataBinder的作用是从web request中把web请求里的parameters绑定到对应的JavaBean上!
在Controller方法中的参数类型可以是基本类型,也可以是封装后的普通Java类型。若这个普通的Java类型没有声明任何注解,则意味着它的每一个属性都需要到Request中去查找对应的请求参数,而WebDataBinder则可以帮助我们实现从Request中取出请求参数并绑定到JavaBean中。
4. WebDataBinder工作机制
WebDataBinder是用来绑定请求参数到指定的属性编辑器里的。由于前台传到Controller里的值是String类型,当往Java Bean里设置这个值的时候,如果设置的这个属性是个对象,Spring就会去找到对应的编辑器editor进行转换,然后再设置进去!
Spring自己提供了大量的实现类,诸如CustomDateEditor,CustomBooleanEditor,CustomNumberEditor等,基本上够我们开始使用。
但在平时使用SpringMVC时,可能会碰到Java Bean中有Date类型的参数,表单中传来代表日期的字符串转化为日期类型,SpringMVC在默认时,是不支持这种类型转换的。此时