一.导入maven依赖

    <dependency> <groupId>javax.validation</groupId>  <artifactId>validation-api</artifactId>  <version>1.1.0.Final</version> </dependency>  <dependency> <groupId>org.hibernate</groupId>  <artifactId>hibernate-validator</artifactId>  <version>5.2.0.Final</version> </dependency> 

二.给需要校验的pojo加上注解

多层嵌套List校验用@Vaild

    @Length(max = 128, message = "MAC值最大长度不能超过128!")private String MAC_VALUE;           //MAC值@NotBlank(message = "返回状态不能为空!")@Length(max = 1, message = "返回状态最大长度不能超过1!")private String RET_STATUS;          //返回状态 S-系统处理成功 F-系统处理失败@ValidList<Ret> RET_ARRAY;      //返回信息列表public class Ret {@NotBlank(message = "返回代码不能为空!")@Length(max = 30, message = "返回代码最大长度不能超过30!")private String RET_CODE;    //返回代码@NotBlank(message = "返回信息不能为空!")@Length(max = 512, message = "返回信息最大长度不能超过512!")private String RET_MSG;     //返回信息}

三、通用Validator校验工具

import org.apache.commons.collections.CollectionUtils;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;/*** validator校验工具* @author liuy* @since 2019年6月20日 19:33:56*/
public class ValidatorUtil {private static Validator validator;static {validator = Validation.buildDefaultValidatorFactory().getValidator();}/*** 单个校验* @param object        待校验对象*/public static String dataCheck(Object object){String result = null;Set<?> set = validator.validate(object);if(set != null && set.size() > 0){Iterator<?> it = set.iterator();ConstraintViolation<?> cv = (ConstraintViolation<?>) it.next();String property = cv.getPropertyPath().iterator().next().getName();result = "[" + property + ":" + cv.getMessage() + "]";}return result;}/*** 使用指定分组校验* @param object 被校验的bean* @param groups 分组* @return*/public static <T> Map<String, StringBuilder> validate(T object, Class<?>... groups) {Map<String, StringBuilder> errorMap = new HashMap<>(16);if (groups == null) {groups = new Class[]{Default.class};}Set<ConstraintViolation<T>> set = validator.validate(object, groups);if (CollectionUtils.isEmpty(set)) {return null;}String property;for (ConstraintViolation<T> c : set) {// 这里循环获取错误信息,可以自定义格式property = c.getPropertyPath().toString();if (errorMap.get(property) != null) {errorMap.get(property).append(",").append(c.getMessage());} else {StringBuilder sb = new StringBuilder();sb.append(c.getMessage());errorMap.put(property, sb);}}return errorMap;}
}

四、校验工具的使用

//校验响应SysHeadMap<String, StringBuilder> errorMap1 = ValidatorUtil.validate(esbResponse.getSYS_HEAD());if(errorMap1 != null && errorMap1.size() >0) {logger.error("响应报文SysHead校验出错!");for (Map.Entry<String, StringBuilder> entry : errorMap1.entrySet()) {logger.error("出错字段: {}, 校验信息: {}", entry.getKey(), entry.getValue());}}

参考:https://www.jianshu.com/p/b3876bf9396c

Validator自定义校验相关推荐

  1. validator自定义校验注解及使用

    validator自定义校验注解及使用 官方文档:https://docs.jboss.org/hibernate/validator/8.0/reference/en-US/html_single/ ...

  2. element-ui的表单校验;el-form表单校验;el-form表单自定义校验;手机号校验;车牌号校验;车牌号正则校验;

    示例:代码在末尾 可以直接复制使用 一.基本属性认知: 1. required: true 会有 * , 但仅是触发最后点击提交按钮时,校验某一项位必填:与输入事件或者选择或者失焦时候 怎么校验无关 ...

  3. springboot中hibernate validator校验模式,分组校验,自定义校验

    检验模式 上面例子中一次性返回了所有验证不通过的集合,通常按顺序验证到第一个字段不符合验证要求时,就可以直接拒绝请求了.Hibernate Validator有以下两种验证模式: 普通模式(默认是这个 ...

  4. antd form rules字数限制_【React】antd的form表单的自定义校验规则的用法

    在用到antd的Form组件的时候,可能会用到自定义的规则,以我的项目为例:在输入名称的时候需要请求接口,校验的内容是后台返回的内容,所以这个时候需要用到自定义的校验规则 屏幕快照 2019-06-1 ...

  5. element表格动态列、本地分页、动态form、自定义校验集成

    json数组生成table列 表格数据本地分页 列支持动态显示/隐藏,列顺序支持自定义 编辑行,根据行数据动态生成form form支持自定义校验 <template> <div&g ...

  6. vue element form 自定义校验1(表单校验)

    通过ref属性获得表单对象,调用表单对象的validate函数进行表单的整体校验 <template><!--model绑定整个form对象的的数据--><!--rule ...

  7. vue element form 自定义校验1(字段校验)

    <template><!--model绑定整个form对象的的数据--><!--rules绑定校验规则--><el-form :model="for ...

  8. easyui datagrid editor 编辑器的简单活用以及自定义校验

    本文介绍easyui的datagrid如何使用编辑器的功能并且完成自定义的校验 1.定义dategrid列表,这里editor主要是设置该字段可以编辑,并且指定自定义编辑类型 editor=" ...

  9. JSR303校验的简单使用以及自定义校验规则的代码编写

    文章目录 一.JSR303校验 1.简介 2.相关注解 3.JSR303依赖包 二.JSR303自带的校验规则 1.在JavaBean上添加校验规则 2.生效校验规则 2.1 controller返回 ...

最新文章

  1. leetcode 226. 翻转二叉树
  2. 在 .NET Core 3.0 中实现 JIT 编译的 JSON 序列化,及一些心得与随想
  3. erlang 架构原理_Erlang与Java内存架构
  4. 如何为你的数据选择最佳图表?
  5. wxString中文出错的解决方法
  6. 嵌入式知识概要(1)
  7. SpringMVC 单文件上传与多文件上传
  8. spring boot2 坑 - 解决cros跨域问题
  9. 制作Web动画——动画制作工具Flash MX
  10. 四叶草黑苹果启动器:Clover EFI bootloader for Mac
  11. 德信计算机真人发声怎么变音乐,文字转语音真人发声 文字转语音制作真人语音广告...
  12. 【限流算法】java实现滑动时间窗口算法
  13. SOLID 原则之依赖倒置原则
  14. 杭州市一医院李勇挂号指南
  15. Gradle入门(五)——Gradle其它模块与Plugin插件详解
  16. 通用电工实验室设备QY-DG28A
  17. Springboot web项目简单统计在线人数
  18. ubuntu下查看电脑硬件的基本信息
  19. 两个字与三个字对齐html,css三个字如何和两个字对齐?
  20. Android Studio 处理Api28 网络图片加载不出来问题

热门文章

  1. matlab中希腊字母相除,matlab中希腊字母
  2. 从1加到100汇编调用c语言,用汇编语言实现从1加到100的方法(1+2+...+100)
  3. 【汇正财经】短线交易和内幕交易有什么区别?
  4. (已解决)关于openwrt路由器重启后zerotier的ip变化处理
  5. 阿里云Link ID²安全加码,助力云丁鹿客“锁定安全”
  6. 计算机网络学习3:计算机网络的定义及分类、性能指标
  7. ESP32学习microPython之(4)--蓝牙应用1--控制LED
  8. Qt5 QLineEdit实现点击调用软键盘
  9. DRR(Digitally Reconstructured Radiograph)在医学影像处理的应用
  10. GUI的终极选择:Tkinter12