对于分页参数page、count都做了@Min、@Max规定,参数传入违规参数系统并未报错,求解
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
@Validated
@RequestMapping("/v1/banner")
@RestController
public class BannerController {
@GetMapping("/page")
public void getBanners(@RequestParam(required = false, defaultValue = "0")
@Min(value = 0) Integer page,
@RequestParam(required = false, defaultValue = "10")
@Min(value = 1) @Max(value = 30) Integer count) {
/**
* 这里的@Max与@Min都失效了 Why?
*/
System.out.println(page);
System.out.println(count);
}
}
postman发送GET请求如下,最终得到状态码200正常,不晓得为什么
第一:spirngmvc不是所有的参数解析器,都提供了Valid的校验;
很明显,RequestParamMethodArgumentResolver就不支持参数校验;那两个支持的,一个是普通的bean,一个是json请求(主要是我也不想继续找了吧,可能其他的也支持)
第二个:触发方式,也就是标记的注解也不对,org.springframework.validation.annotation.Validated这个注解支持,还一个就是Valid开头的也支持;我没测试,是不是自己定义一个这个Validaaa注解,他也能拦截勒
第一:spirngmvc不是所有的参数解析器,都提供了Valid的校验;
很明显,RequestParamMethodArgumentResolver就不支持参数校验;那两个支持的,一个是普通的bean,一个是json请求(主要是我也不想继续找了吧,可能其他的也支持)
第二个:触发方式,也就是标记的注解也不对,org.springframework.validation.annotation.Validated这个注解支持,还一个就是Valid开头的也支持;我没测试,是不是自己定义一个这个Validaaa注解,他也能拦截勒
@Validated max注解失效的话 在类上面加这个注解