SpringBoot 请求参数或表单校验
1. Get参数(@RequestParam参数)校验
A. 方法所在的控制层Controller上加@Validated注解;
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。B. 请求方法Method上加上需要校验的注解,比如:@Size等,最好重写message属性;
C. 捕捉校验失败异常信息:ConstraintViolationException异常。
例如:
package com.ruhuanxingyun.controller; import com.ruhuanxingyun.controller.response.JsonResult; import org.springframework.validation.BindException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; @ControllerAdvice public class ErrorHandlerController { @ExceptionHandler(BindException.class) @ResponseBody public JsonResult handleBindException(BindException e) { // 得到第一个字段的错误信息 String msg = e.getBindingResult().getAllErrors().get(0).getDefaultMessage(); return JsonResult.error(msg); } }
2. model实体参数校验
A. 实体类字段上加需要校验的注解;
B. 请求方法上实体前加@Valid或@Validated注解;
C. 捕捉校验失败异常信息:BindException异常,或者在实体后使用BindingResult类,然后进行处理;
D. 分组校验,还可以排序,例如:新增和修改,参数ID有无的问题。
例如:
package com.ruhuanxingyun.controller; import com.ruhuanxingyun.controller.response.JsonResult;import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import javax.validation.ConstraintViolationException; @ControllerAdvice public class ErrorHandlerController { @ExceptionHandler(ConstraintViolationException.class) @ResponseBody public JsonResult handleValidationException(ConstraintViolationException e) { // 得到第一个字段的错误信息 String msg = e.getConstraintViolations().iterator().next().getMessage(); return JsonResult.error(msg); } }
3. 检测第一个失败就抛出异常,配置如下:
@Configuration public class WebConfig { @Bean public Validator validator() { ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) .configure() //failFast的意思只要出现校验失败的情况,就立即结束校验,不再进行后续的校验。 .failFast(true) .buildValidatorFactory(); return validatorFactory.getValidator(); } @Bean public MethodValidationPostProcessor methodValidationPostProcessor() { MethodValidationPostProcessor methodValidationPostProcessor = new MethodValidationPostProcessor(); methodValidationPostProcessor.setValidator(validator()); return methodValidationPostProcessor; } }
https://www.jianshu.com/p/aa8b3163b30a
https://blog.csdn.net/qq_27680317/article/details/79970590
http://www.cnblogs.com/fengqiaoyebo/p/10384347.html

更多精彩