@RequestParam
- 参数value,将请求的参数绑定到方法中的参数上,请求参数可以和方法参数不同;
- 参数required,默认情况下,required=true,也就是参数必须要传。required=false,表示该参数可以传可不传。如果不传,且没有默认值的话,就为null。
- 参数defaultValue ,如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值。用了这个参数,那么required为true时,不传参数也不会报错。
1 | "/happy") ( |
注意:
@RequestParam是通过Request.getParameter() 来获取参数值的,它可以处理Get请求和POST请求的值
用来处理Content-Type: 为application/x-www-form-urlencoded、multipart/form-data编码的内容,提交方式GET、POST。
application/json, application/xml,必须使用@RequestBody来处理
multipart/form-data,application/x-www-form-urlencoded,@RequestBody不能处理
@PathVariable
该注解用于方法修饰方法参数,会将修饰的方法参数变为可供使用的uri变量(可用于动态绑定)。
1 | "/happy/{dayid}",method=RequestMethod.GET) (value= |
@PathVariable中的参数可以是任意的简单类型,如int, long, Date等等。Spring会自动将其转换成合适的类型或者抛出 TypeMismatchException异常。
@Validated和@Valid
####用法
在Controller层增加一个参数BindingResult,BindingResult必须紧挨着要检验的参数后面
1 | public String test02(@RequestBody @Validated User user, BindingResult result){ |
####区别
- 注解位置
@Validated:用在类型、方法和方法参数上;但不能用于成员属性
@Valid:可以用在方法、构造函数、方法参数和成员属性上
- 分组校验
@Validated:提供分组功能,可以在参数验证时,根据不同的分组采用不同的验证机制
@Valid:没有分组功能
- 嵌套检验
一个待验证的pojo类,其中还包含了待验证的对象,需要在待验证对象上注解@Valid,才能验证待验证对象中的成员属性,这里不能使用@Validated。