注册页面,优化效验规则
1.在pom.xml文件引入hibernate-validator
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.4.Final</version>
</dependency>
2.在工程下新加validator目录,新规一个ValidatorResult.java
public class ValidatorResult { //校验结果是否有错 private boolean hasErrors; //存放错误信息的map private Map<String,String> errorMsgMap = new HashMap<>(); public boolean isHasErrors() { return hasErrors; } public void setHasErrors(boolean hasErrors) { this.hasErrors = hasErrors; } public Map<String, String> getErrorMsgMap() { return errorMsgMap; } public void setErrorMsgMap(Map<String, String> errorMsgMap) { this.errorMsgMap = errorMsgMap; } //实现通用的格式化字符串信息获取的错误信息结果的msg方法 public String getErrMsg(){ return StringUtils.join(Arrays.toString(errorMsgMap.values().toArray()) + ","); } }
3.在validator包下,新规一个ValidatorImpl.java
@Component public class ValidatorImpl implements InitializingBean { private Validator validator; //实现校验方法并返回校验结果 public ValidatorResult vlidator(Object bean){ ValidatorResult validatorResult = new ValidatorResult(); Set<ConstraintViolation<Object>> constraintViolations = validator.validate(bean); if(constraintViolations.size() > 0){ //有错误 validatorResult.setHasErrors(true); constraintViolations.forEach(constraintViolation->{ String errMsg = constraintViolation.getMessage(); String propertyName = constraintViolation.getPropertyPath().toString(); validatorResult.getErrorMsgMap().put(propertyName,errMsg); }); } return validatorResult; } @Override public void afterPropertiesSet() throws Exception { //将hibernate validator 通过工厂的初始化方式使其实例化 == 校验器 this.validator = Validation.buildDefaultValidatorFactory().getValidator(); } }
3.在model包下的userModel.java,每个字段上方加入注解 @NotBlank(不能为空字符串并且不能为null) @NotNull(不能为null)
@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; private String registerMode; private String thirdPartyId; @NotNull(message = "密码不能为空") private String encrptPassword;
4.在service下的impl下的UserServiceImpl.java register方法加上
//校验bean ValidatorResult validatorResult = this.validator.vlidator(userModel); if(validatorResult.isHasErrors()){ throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR,validatorResult.getErrMsg()); }

浙公网安备 33010602011771号