一、引入架包

maven地址  点击即可。

<!-- https://mvnrepository.com/artifact/org.hibernate.validator/hibernate-validator -->
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.16.Final</version>
</dependency>

二、创建validator包

1、创建返回模版,
public class ValidationResult {
// 检验结果是否有错
private boolean hasErrors=false; // 存放错误信息的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(errorMsgMap.values().toArray(),",");
}
}
2、创建检验器实现类
@Component
public class ValidatorImpl implements InitializingBean { private Validator validator; // 实现效验方法并返回检验结果
public ValidationResult validate(Object bean){
final ValidationResult result= new ValidationResult();
Set<ConstraintViolation<Object>> constraintViolationSet=validator.validate(bean);
if(constraintViolationSet.size()>0){
// 有错误
result.setHasErrors(true);
constraintViolationSet.forEach(constraintViolation->{
String errMsg=constraintViolation.getMessage();
String propertyName=constraintViolation.getPropertyPath().toString();
result.getErrorMsgMap().put(propertyName,errMsg);
});
}
return result;
} @Override
public void afterPropertiesSet() throws Exception {
// 将hibernate validtor通过工厂的初始化方式使其实例化
this.validator= Validation.buildDefaultValidatorFactory().getValidator(); }
}

三、在javaBeanVo类上添加注解

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;
@NotBlank(message = "手机号码不能为空")
private String telphone;
private String registerMode;
private String thirdPartyId; @NotBlank(message = "密码不能为空")
private String encrptPassword;
}

四、实践

    @Autowired
ValidatorImpl validator; //方法内写
ValidationResult result=validator.validate(userModel);
if (result.isHasErrors()){
throw new BusinessException(EmBusinessError.PARAMETER_VALIDATION_ERROR,result.getErrMsg());
}

Hibernate Validator Engine的用法的更多相关文章

  1. spring 项目tomcat 8.0.2 发布报错:Could not initialize class org.hibernate.validator.engine.ConfigurationImpl

    tomcat 8 项目发布遇到的错 [ERROR] -- ::, org.springframework.web.servlet.DispatcherServlet - Context initial ...

  2. hibernate 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.xxx 这类的问题

    <!-- 解决 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.intern ...

  3. Caused by: java.lang.AbstractMethodError: org.hibernate.validator.internal.engine.ConfigurationImpl

    1.错误描述 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanCreationException: Error ...

  4. java.lang.NoClassDefFoundError: org/hibernate/validator/internal/engine/DefaultClockProvider

    ①在springboot的spring-boot-starter-web默认引入了以下依赖: <dependency> <groupId>com.fasterxml.jacks ...

  5. 【日常错误】Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl

    最近在用spring-boot编写一个Lucene项目,中间用到了redis,引用了spring-boot-starter-data-redis,在eclipse中用外部Tomcat启动项目一切正常, ...

  6. SpringMVC利用Hibernate validator做字段验证

    1.添加Hiberbate validator相关的jar包 2.字需要验证的formbean 上添加验证的注解,内置注解有: dBean Validation 中内置的 constraint @Nu ...

  7. Hibernate Validator 6.0.9.Final - JSR 380 Reference Implementation: Reference Guide

    Preface Validating data is a common task that occurs throughout all application layers, from the pre ...

  8. hibernate.validator.constraints.NotEmpty校验请求参数报错java.lang.NoClassDefFoundError: javax/el/PropertyNotFoundException

    spring maven项目,使用hibernate validator 注解形式校验客户端的请求参数. hibernate-validator版本:5.0.2.Final validation-ap ...

  9. hibernate validator 专题

    JSR-303 原生支持的限制有如下几种 : 限制 说明 @Null 限制只能为 null @NotNull 限制必须不为 null @AssertFalse 限制必须为 false @AssertT ...

随机推荐

  1. JS 错误

    JS 错误 try 语句测试代码块的错误. catch 语句处理错误. throw 语句创建自定义错误. 错误一定会发生 当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错 ...

  2. python中线程 进程 协程

    多线程:#线程的并发是利用cpu上下文的切换(是并发,不是并行)#多线程执行的顺序是无序的#多线程共享全局变量#线程是继承在进程里的,没有进程就没有线程#GIL全局解释器锁#只要在进行耗时的IO操作的 ...

  3. django验证码captcha

    官方文档 https://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation 使用命令安装pip instal ...

  4. PyCharm将选中的内容加上引号

    正常情况下,选中一段内容,再按引号,内容会被替换为引号 想要将选中的内容不被替换为引号,而在内容的两端加上引号,只需设置一下即可 File  -->  Settings  -->  Edi ...

  5. webpack打包 The 'mode' option has not been set, webpack will fallback to

    webpack 打包报错 The 'mode' option has not been set, webpack will fallback to 'production' for,Module no ...

  6. bootrom/spl/uboot/linux逐级加载是如何实现的?

    关键词:bootrom.spl.uboot.linux.mksheader.sb_header.mkimage.image_header_t等等. 首先看一个典型的bootrom->spl-&g ...

  7. 2019年最新50道java基础部分面试题(三)

    前21题请看之前的随笔 22.面向对象的特征有哪些方面 计算机软件系统是现实生活中的业务在计算机中的映射,而现实生活中的业务其实就是一个个对象协作的过程.面向对象编程就是按现实业务一样的方式将程序代码 ...

  8. WPF 精修篇 属性触发器

    原文:WPF 精修篇 属性触发器 属性触发器是通过  某个条件触发改变属性 通过无代码实现功能 <Style TargetType="{x:Type Label}"> ...

  9. STL pair类型的介绍

    pair标准库类型它定义在头文件utility中. 一个pair保存两个数据成员.类似容器,pair是一个用来生成特定类型的模板.当创建一个pair时,我们必须提供两个类型名,pair的数据成员将具有 ...

  10. 【AtCoder】AtCoder Grand Contest 040 解题报告

    点此进入比赛 \(A\):><(点此看题面) 大致题意: 给你一个长度为\(n-1\).由\(<\)和\(>\)组成的的字符串,第\(i\)位的字符表示第\(i\)个数和第\( ...