数据绑定和类型转换,就是把请求中的参数转换成对应的变量,提供给后续的服务处理。HTTP请求只能传递字符串类型的参数,但是后台程序需要的变量类型就会多种多样了,比如int, long甚至是javabean这种自定义类型,如果框架能帮我们自动处理这些类型转换,就再好不过了。
SpringMVC中,最常使用的参数绑定方式是@RequestParam,不管是URL上的queryParam还是POST body中的FormParam都可以使用这个注解获得,并且会自动根据参数的类型进行类型转换。
比如,@RequestParam("priority") int priority,就会自动从请求中获得名为priority的参数,并转换成int类型,后台方法中可以直接使用。
也可以获得一个列表,比如前台传递的参数是selectedItem=1&selectedItem=2,可以使用@RequestParam("selectedItem") List<Long> selectedItem,直接把多个同名参数转换成一个列表。
如果某个参数可能不传递给后台,可以使用@RequestParam(value = "id", required = false) Integer id,那么在没有传递参数id时,就会传递null。
如果想获得请求传递的所有参数,可以使用@RequestParam MultivalueMap parameterMap,parameterMap中包含的就是请求中的所有参数了。
如果想把参数id=1&name=Lingo的值传入对应的javabean中,也可以使用@ModelAttribute UserBase userBean,SpringMVC会自动根据参数名与javabean中属性名的对应关系,把参数值复制到javabean中,这在前台表单有几十个参数需要传递给后台的情况就十分有用了。