- 无BindingResult,异常是都要抛出的。
- @Min代表注解的条件约束不满足
- ConstraintViolationException:表示约束不满足
MethodArgumentNotValidException获取BindingResult
Spring Bean范畴校验
@Validated 要配置MethodvalidationPostProcessor【Spring对Service方法的校验】
配置MethodValidationPostProcessor
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Bean
public MethodValidationPostProcessor mvcMethodValidationPostProcessor() {
return new MethodValidationPostProcessor();
}
}
Bean上设置@Validated 参数设置约束@Min等。
@RestController
@RequestMapping
@Validated
public class HelloController {
@PutMapping("/hello/id/{id}/status/{status}")
public Object helloGet(@Max(5) @PathVariable Integer id, @Min(5) @PathVariable Integer status) {
return "hello world";
}
}
Spring Bean校验异常要抛出ConstraintViolationException
【好文】让Controller支持对平铺参数执行数据校验(默认Spring MVC使用@Valid只能对JavaBean进行校验)【享学Spring】_YourBatman-CSDN博客
SpringMVC范畴校验
ModelAttributeMethodProcessor参数验证
@ModelAttribute抛出BindException的原因RequestResponseBodyMethodProcessor参数验证
@RequestBody先类型转换,再参数验证
- 类型转换失败直接抛HttpMessageNotReadableException
- 验证失败 并且 没有BindingResult 抛出MethodArgumentNotValidException
【好文】 @Validated和@Valid的区别?教你使用它完成Controller参数校验(含级联属性校验)以及原理分析【享学Spring】_YourBatman-CSDN博客