SpringBoot2 Validator 注册校验

网友投稿 231 2022-08-25

SpringBoot2 Validator 注册校验

为什么使用Validator

当我们对前端的注册信息进行一个验证的时候,我们要在Service对每一个变量进行一次判断,这样太复杂了,那么就需产生一种格式化的简单的校验方式了。

使用Validator可以通过简单的配置将校验信息返回。

Validator的使用

我们首先要定义一个校验结果返回的类。这个类用来判断信息是否有错,并且将错误信息存储到Map中。

省略setter getter 方法

/** * 描述:校验结果 * @author wangyu * @date 2019/5/29 */public class ValidationResult { //判断校验是否有错 private boolean hasError = false; //存放错误信息的map private Map errMsgMap = new HashMap<>(); //格式化字符串信息获得错误结果的msg方法 public String getErrMsg(){ return StringUtils.join(errMsgMap.values().toArray(),","); }}

然后通过Spring的工厂对Valiator进行一个初始化。然后写一个接收一个Object对象的方法用来对我们接受的对象进行校验。并将错误信息保存到Map中。

** * 描述:对 Validator 进行实例化配置 * @author wangyu * @date 2019/5/29 */@Componentpublic class ValidatorImpl implements InitializingBean { private Validator validator; //实现校验方法并返回结果 public ValidationResult validate(Object bean) { ValidationResult validationResult = new ValidationResult(); Set> constraintViolations = validator.validate(bean); if (constraintViolations.size() > 0) { //有错误 validationResult.setHasError(true); constraintViolations.forEach(constraintViolation -> { String errMsg = constraintViolation.getMessage(); String propertyName = constraintViolation.getPropertyPath().toString(); validationResult.getErrMsgMap().put(propertyName,errMsg); }); } return validationResult; } @Override public void afterPropertiesSet() throws Exception { //使hibernate validator通过工厂初始化进行实例化 this.validator = Validation.buildDefaultValidatorFactory().getValidator(); }}

最后,将我们要校验的对象的类进行校验的注解绑定。

/** * 描述:用户Model层 * @author wangyu * @date 2019/5/22 */public class UserModel { private Integer id; @NotBlank(message="用户名不能为空") private String name; @NotNull(message = "性别必须填写") private Byte gender; @NotNull(message = "年龄必须填写") @Min(value = 0,message = "年龄必须大于0") @Max(value = 150,message = "年龄必须小于150") private Integer age; @NotNull(message="手机号不能为空") private String telphone; @NotBlank(message="密码不能为空") private String encrptPassword;}我们使用的时候只需要调用Validator方法即可。ValidationResult validationResult = validator.validate(userModel); if (validationResult.isHasError()){ throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR,validationResult.getErrMsg()); }

先进行校验信息的判断是否有错,然后通过自定义的业务异常返回到前端。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:营销技巧:做销售的要有气势,才能征服客户!(营销技巧和营销)
下一篇:某校2018专硕编程题-班级同学的出生日期排序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~