@Data
public class SearchReq{
@DecimalMin(value = "0.00",inclusive = false,message = "price必须大于或等于0.00")
@DecimalMax(value = "999.99",inclusive = true)
@Digits(integer = 3,fraction = 2)
private BigDecimal price;
}
@DecimalMin
value:最小值
inclusive:是否可以等于最小值,默认true,>= 最小值
message:错误提示(默认有一个错误提示i18n支持中文)
@DecimalMax
同上
@Digits
integer: 整数位最多几位
fraction:小数位最多几位
message:同上,有默认提示
@Validate放在类上,用于验证List参数中单个对象的属性
@Valid + @Validate配合全局异常处理
@ExceptionHandler(MethodArgumentNotValidException.class)
@ExceptionHandler(ConstraintViolationException.class)
几个类路径
import javax.validation.ConstraintViolationException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.validation.annotation.Validated;
import javax.validation.Valid;
log.warn("{} {} 请求参数校验失败,message: {}", request.getMethod(), request.getRequestURI(), e.getBindingResult().getFieldError().getDefaultMessage());
log.warn("{} {} 请求参数校验失败,message: {}", request.getMethod(), request.getRequestURI(), e.getConstraintViolations().stream().findFirst().get().getMessage());
捕获参数校验异常,包装后接口返回。