一般我们使用spring表单验证,在实体类里字段标注实体类注解。
如:
@Data public class SupplierBarCode { //定制批号 @NotBlank(message = "定制批号不能为空") private String customizeLot; //供应商 @NotBlank(message = "供应商条码不能为空") private String supplier; //创建人 @NotBlank(message = "创建人不能为空") private String creator; //条码 @NotEmpty(message = "条码不能为空") private List<String> barCodeList; }
然后在controller方法开启spring表单验证,然后在方法参数加@Validated 开启验证即可
@PostMapping(value = "saveData") @ResponseBody public String saveData(@Validated @RequestBody SvVideoDto data)
但这样的验证不通过,会报spring的自带信息,有时我们需要对对表单及json传过来的数据正行验证,我们可以具手动调用spring验证方法,具体操作如下:
public static <T> List<String> validate(T t) { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set<ConstraintViolation<T>> constraintViolations = validator.validate(t); List<String> messageList = new ArrayList<>(); for (ConstraintViolation<T> constraintViolation : constraintViolations) { messageList.add(constraintViolation.getMessage()); } return messageList; }
然后简单的调用即可:
List<String> messageList=ApiGoodsService.validate(supplierBarCode);
报错信息简单明了。