当前位置: 首页 > news >正文

ValidatorUtil字段验证工具类

字段验证工具类

package com.aa.bb.cc.common.utils;import com.aa.bb.cc.common.exception.BusinessException;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;public class ValidatorUtil {private static Validator validator;static {validator = Validation.buildDefaultValidatorFactory().getValidator();}/*** 校验对象* * @param object 待校验对象* @param groups 待校验的组* @throws BusinessException 校验不通过,则报RRException异常*/public static String validateEntity(Object object, Class<?>... groups)throws BusinessException {Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);if (!constraintViolations.isEmpty()) {StringBuilder msg = new StringBuilder();for (ConstraintViolation<Object> constraint : constraintViolations) {msg.append(constraint.getMessage()).append("<br>");}return msg.toString();}return null;}/*** 校验对象* @param entity* @param exceptFields* @param <T>*/public static <T> void validate(T entity, String... exceptFields){Set<ConstraintViolation<T>> set=validator.validate(entity);if(CollectionUtils.isNotEmpty(set)){for (ConstraintViolation<T> item : set) {String field = item.getPropertyPath().toString();if (!isExcept(field, exceptFields)) {String message = item.getMessage();throw new BusinessException(1,message);}}}}/*** 判断属性是否属于例外属性列表* @param field* @param exceptFields* @return*/private static boolean isExcept(String field, String... exceptFields) {if (exceptFields == null)return false;for (String obj : exceptFields) {if (StringUtils.isNotBlank(obj) && field.indexOf(obj) >= 0) {return true;}}return false;}
}
http://www.lryc.cn/news/262453.html

相关文章:

  • Python 自动化之处理图片(一)
  • Axure动态面板的应用与ERP系统登录界面、主页左侧菜单栏、公告栏的绘制
  • 电机(按工作电源分类)介绍
  • Web前端JS通过使用AudioWorkletNode() 获取 Video/Audio 视音频声道(左右声道|多声道)
  • 力扣LeetCode75题
  • 如何向领导汇报工作?一篇文章告诉你!
  • GPT-4.5!!!
  • kafka入门(四):kafka生产者发送消息
  • redis集群模糊获取缓存redisKey
  • 100GPTS计划-AI翻译TransLingoPro
  • Linux install manual 1Panel
  • 母婴服务品牌网站的效果如何
  • C语言--有一个3*4的矩阵,求出其中最大值的那个元素的值,以及其所在的行号和列号
  • 安全算法(二):共享密钥加密、公开密钥加密、混合加密和迪菲-赫尔曼密钥交换
  • MYSQL练题笔记-高级字符串函数 / 正则表达式 / 子句-简单3题
  • vue扭蛋机抽奖游戏
  • 代码随想录27期|Python|Day16|二叉树|104.二叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数
  • ༺༽༾ཊ—设计-简介-模式—ཏ༿༼༻
  • Matplotlib快速入门,Python通用的绘图工具库上手
  • Linux 基本语句_16_Udp网络聊天室
  • 使用ffmpeg命令进行视频格式转换
  • Mac安装Adobe AE/pr/LR/ai/ps/au/dw/id 2024/2023报错问题解决(常见错误:已损坏/2700/146/130/127)
  • Python三级 每周练习题31
  • 【DataSophon】大数据服务组件之Flink升级
  • Android笔记(十八):面向Compose组件结合Retrofit2和Rxjava3实现网络访问
  • mybatis中oracle的sql没走索引导致特别慢(未加jdbcType的)
  • QT自带打包问题:无法定位程序输入点?metaobject@qsound
  • 7.3 lambda函数
  • dcoker-compose一键部署EFAK —— 筑梦之路
  • 音视频:Ubuntu下安装 FFmpeg 5.0.X