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

自定义枚举类型检查

/*** 工单状态,使用字典:order_item_state*/
@CheckEnum(nullAble = true, enumType = OrderItemStateEnum.class)
private String workState;

注解类

package com.gdyunst.core.tool.validation;import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.*;/*** 校验是否是状态枚举中的项*/
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {CheckEnumValidation.class})
public @interface CheckEnum {String message() default "请输入字典中的状态类型";/*** 是否可以为空,true可以为空,当配置true并且传的值也是空,那就不做校验* @return*/boolean nullAble() default false;/*** 枚举类型* @return*/Class enumType();/*** 枚举中的方法名称,get方法,如:getType* @return*/String methodName() default "getType";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}

配置类

package com.gdyunst.core.tool.validation;import cn.hutool.core.util.StrUtil;
import com.gdyunst.core.tool.util.EnumUtils;import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;/*** 参数必须是状态字典校验*/
public class CheckEnumValidation implements ConstraintValidator<CheckEnum, String> {/*** 获取配置中是否为空*/private Class enumType;private boolean nullAble;private String methodName;@Overridepublic void initialize(CheckEnum checkEnum) {enumType = checkEnum.enumType();nullAble = checkEnum.nullAble();methodName = checkEnum.methodName();}/*** 传递的字典类型参数值* @param enumValue* @param constraintValidatorContext* @return*/@Overridepublic boolean isValid(String enumValue, ConstraintValidatorContext constraintValidatorContext) {// 配置了允许为空并且该值也是空,那就不去校验格式if (nullAble && StrUtil.isBlank(enumValue)) {return true;}if(StrUtil.isBlank(enumValue)){constraintValidatorContext.disableDefaultConstraintViolation();constraintValidatorContext.buildConstraintViolationWithTemplate("请输入字典字段参数").addConstraintViolation();return false;}if (StrUtil.isBlank(methodName)) {constraintValidatorContext.disableDefaultConstraintViolation();constraintValidatorContext.buildConstraintViolationWithTemplate("枚举中的字段必须配置").addConstraintViolation();return false;}if (enumType == null) {constraintValidatorContext.disableDefaultConstraintViolation();constraintValidatorContext.buildConstraintViolationWithTemplate("枚举对象必须配置").addConstraintViolation();return false;}Object stateEnum = EnumUtils.getEnumByLambda(enumValue, enumType, methodName);if(stateEnum == null) {constraintValidatorContext.disableDefaultConstraintViolation();constraintValidatorContext.buildConstraintViolationWithTemplate(String.format("请输入系统字典: %s 中的枚举值", enumType.getSimpleName())).addConstraintViolation();return false;}return true;}
}

相关文章:

自定义枚举类型检查

/*** 工单状态&#xff0c;使用字典&#xff1a;order_item_state*/ CheckEnum(nullAble true, enumType OrderItemStateEnum.class) private String workState; 注解类 package com.gdyunst.core.tool.validation;import javax.validation.Constraint; import javax.valid…...

探索四川财谷通抖音小店:安全与信赖的购物新体验

在数字经济蓬勃发展的今天&#xff0c;抖音平台凭借其庞大的用户基础和强大的内容生态&#xff0c;逐渐成为了电商领域的一股不可忽视的力量。其中&#xff0c;四川财谷通抖音小店作为这一浪潮中的佼佼者&#xff0c;不仅以其丰富的商品种类和独特的品牌魅力吸引了众多消费者的…...

systemd-manage系统服务图形化管理工具使用教程

1. systemd-manage介绍 systemd-manage是一个开源的基于systemd服务管理的图形化工具&#xff0c;使用qt图形库进行开发&#xff0c;可以提供服务管理&#xff0c;用户会话&#xff0c;配置文件修改&#xff0c;日志查询&#xff0c;性能分析&#xff0c;进程管理等功能。图形…...

移除元素(LeetCode)

题目 给你一个数组 和一个值 &#xff0c;你需要 原地 移除所有数值等于 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 解…...

代码随想录27期|Python|Day38|509斐波那契|738.爬楼梯|746.746. 使用最小花费爬楼梯

贴一下动态规划的步骤&#xff08;5步&#xff09;&#xff0c;就像是之前递归一样&#xff0c;需要每次落实到位。 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 ​​​​​509. 斐波那契 注意到n的范…...

windows docker容器部署前端项目

一、介绍 Docker 是一个开源的平台&#xff0c;旨在简化应用程序的开发、部署和运行。它通过使用容器&#xff08;containers&#xff09;来实现这一点。容器是一种轻量级、可移植的虚拟化方式&#xff0c;可以在不同的环境中一致地运行软件。 Docker 的主要作用和优点包括&a…...

科普文:微服务之全文检索ElasticSearch 集群的搭建

一、集群有什么用 1.1 群集的含义与产生 群集&#xff08;或称为集群&#xff09;是由多台主机构成&#xff0c;但对外&#xff0c;只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名或IP&#xff09;&#xff0c;相当于一台大型计算机。互联网应用中&#xf…...

QtObject是干什么的?

QtObject 是 Qt Quick 中的一个基类&#xff0c;用于创建非视觉对象。这意味着 QtObject 不渲染任何视觉内容&#xff0c;它主要用于定义数据和逻辑&#xff0c;而不是用户界面元素。你可以把 QtObject 看作是 QML 中的一个基础组件&#xff0c;用于创建和管理不需要显示的对象…...

锐捷RCNA | 远程登录与路由技术

锐捷RCNA | 远程登录与路由技术 一、远程登录配置1. Telnet远程登录介绍2. 案例1--设置远程登录密码实现远程登录3. 案例2--定义不同用户账户实现远程用户权限隔离4. SSH远程登录介绍5. 案例--通过SSH功能远程管理设备 二、路由技术1. 直连路由的数据通信2. 间接路由的数据通信…...

实现Vue-tiny-diff算法

前言 前面我们实现了基本的数据更新到视图渲染的逻辑,但是这种方式(innerHTML)是极其低效的, 因此,我们相应引入 dom 和 diff 算法, 数据到视图的过程变为: state -> vdom -> dom vNode 层 所谓 vNode, 就是一个表示 dom 结构的轻量对象 {tag, props, children; }为…...

正则表达式测试工具

前言 正则表达式测试工具可供您输入正则表达式和测试文本&#xff0c;立即查看匹配结果. 下面是离线的HTML文件,同样可以提供相同的服务. 目录 使用说明 HTML代码 正则表达式的编写经验和方法 总结 使用说明 1.先将HTML代码存储成.html为后缀的文件; 2.然后用浏览器打开这个…...

Github 2024-08-02 开源项目日报 Top9

根据Github Trendings的统计,今日(2024-08-02统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4Go项目1C项目1Rust项目1Shell项目1Dockerfile项目1TypeScript项目1Dart项目1Docker-OSX: 在Docker容器中运行Mac OS X 创建周期:152…...

重生之我 学习【数据结构之顺序表(SeqList)】

⭐⭐⭐ 新老博友们&#xff0c;感谢各位的阅读观看 期末考试&假期调整暂时的停更了两个多月 没有写博客为大家分享优质内容 还容各位博友多多的理解 美丽的八月重生之我归来 继续为大家分享内容 你我共同加油 一起努力 ⭐⭐⭐ 数据结构将以顺序表、链表、栈区、队列、二叉树…...

前端day4-表单标签

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>day4-表单</title> </head> <body&g…...

vue3-print-nb 表格打印分页,第一页有空白的情况出现解决方法(两种:一种原生,一种基于element表格)

第一种&#xff1a;基于element表格分页 <template><!-- element分组打印 --><div class"hello"><button v-print"printContent">打印</button><div id"printDiv"><p>工资统计表</p><p>…...

搜维尔科技:借助 Xsens中的远程人体录制功能,可以在任何位置以无限量同时捕捉无限数量演员的身体动作

借助 Xsens中的远程人体录制功能&#xff0c;可以在任何位置以无限量同时捕捉无限数量演员的身体动作 搜维尔科技&#xff1a;借助 Xsens中的远程人体录制功能&#xff0c;可以在任何位置以无限量同时捕捉无限数量演员的身体动作...

2024/08 近期关于AI的阅读和理解[笔记]

#Cohere 就像商业能力很强的云数仓公司 Snowflake 一样&#xff0c;Cohere 也采用了按需付费模式而不是按月或按年付费&#xff0c;而且它的付费模式很精细。Cohere 按照模型的不同能力&#xff0c;包括文本生成&#xff0c;文本总结&#xff0c;重新排名&#xff0c;文本分类…...

SmartEDA:解锁设计新境界,从工具到灵感的飞跃之旅!

在这个数据驱动的时代&#xff0c;每一次点击、每一次滑动都蕴含着无限的可能与洞察。然而&#xff0c;在众多数据分析工具中&#xff0c;SmartEDA不仅仅是一把解锁数据奥秘的钥匙&#xff0c;它更是一座桥梁&#xff0c;连接着冰冷的数据世界与创意无限的设计灵感之源。今天&a…...

解决Minizip压缩后解压时的头部错误问题

最近&#xff0c;在处理文件压缩的任务时&#xff0c;我遇到了一个有趣的问题。使用Minizip库进行文件压缩后&#xff0c;在解压过程中收到了一个关于"头部错误"的警告。尽管这个警告看似令人担忧&#xff0c;但解压操作最终仍然能够成功完成文件的解压。这引发了我的…...

数据库表水平分割和垂直分割?

0.数据库表的水平分割和垂直分割是两种常见的数据库优化技术&#xff0c;‌它们分别针对不同的场景和需求进行数据表的拆分。‌ 1. 水平分割&#xff08;‌Horizontal Splitting&#xff09;‌主要是按照记录进行分割&#xff0c;‌即不同的记录被分开保存在不同的表中&#x…...

软件系统规划步骤和可行性研究步骤

前者是系统开发初始阶段的宏观活动序列,后者则是规划阶段中的一项核心子任务。 一、软件系统规划步骤(典型过程) 系统规划通常属于软件生命周期的“项目立项与计划”阶段,常见步骤如下: 初步调查 识别项目机会、用户需求、业务痛点,明确系统建设的初步目标与范围。 问题…...

重新定义翻译质量评估:COMET的智能引擎与行业变革

重新定义翻译质量评估&#xff1a;COMET的智能引擎与行业变革 【免费下载链接】COMET A Neural Framework for MT Evaluation 项目地址: https://gitcode.com/gh_mirrors/com/COMET 在全球化内容生产的浪潮中&#xff0c;翻译质量评估长期被一个认知误区所困扰——许多…...

Windows Defender Remover终极指南:彻底释放系统性能的3种方法

Windows Defender Remover终极指南&#xff1a;彻底释放系统性能的3种方法 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mir…...

面向太空应用的钙钛矿光伏:稳定性测试指南

随着全球商业航天产业的快速发展&#xff0c;低地球轨道&#xff08;LEO&#xff09;卫星星座&#xff08;如 Starlink、千帆&#xff09;正推动航天从“高可靠、小规模”向“低成本、大规模”转型。这一变化对能源系统提出了新的要求&#xff1a;更高比功率、更低成本以及更轻…...

大模型工程师的黄金赛道:揭秘高薪岗位的核心技能与必备经验!

本文深入剖析了大模型领域内的五大核心岗位方向&#xff0c;包括基座模型训练、大模型微调、大模型开发、大模型推理部署以及多模态大模型。文章详细阐述了每个方向的工作内容、核心竞争力、所需经验及市场现状&#xff0c;并推荐了相关的开源教程。此外&#xff0c;还强调了在…...

基础算法-高精度:高精度减法

P2142 高精度减法 题目链接&#xff1a;P2142 高精度减法 - 洛谷 高精度的题目解法和之前高精度加法的解法基本相同&#xff0c;所以就不再过多讲解原理了。 解法&#xff1a;模拟列竖式计算的过程。 ①先用字符串读入&#xff0c;然后拆分每一位&#xff0c;逆序放在数组…...

Pyfa:EVE Online舰船配置的离线解决方案

Pyfa&#xff1a;EVE Online舰船配置的离线解决方案 【免费下载链接】Pyfa Python fitting assistant, cross-platform fitting tool for EVE Online 项目地址: https://gitcode.com/gh_mirrors/py/Pyfa 在EVE Online的浩瀚宇宙中&#xff0c;舰船配置是决定战斗胜负的关…...

LANs.py WiFi干扰功能深度解析:如何有效阻断无线网络连接

LANs.py WiFi干扰功能深度解析&#xff1a;如何有效阻断无线网络连接 【免费下载链接】LANs.py Inject code and spy on wifi users 项目地址: https://gitcode.com/gh_mirrors/la/LANs.py LANs.py是一款功能强大的无线网络干扰工具&#xff0c;能够帮助用户有效阻断特定…...

如何用Tweepy构建强大的Twitter数据分析报告:5个高级搜索聚合技巧

如何用Tweepy构建强大的Twitter数据分析报告&#xff1a;5个高级搜索聚合技巧 【免费下载链接】tweepy Twitter for Python! 项目地址: https://gitcode.com/gh_mirrors/tw/tweepy Tweepy是Python中最流行的Twitter API客户端库&#xff0c;让开发者能够轻松访问Twitter…...

【第3章>第10节】基于yolov2模型的人员摔倒检测系统matlab仿真实现

本课程学习成功预览 目录 1.使用软件和版本 2.基于YOLOv2深度学习网络的人员跌倒检测识别概述 3.yolov2模型的训练程序和测试程序matlab实现 4.基于YOLOv2深度学习网络的人员跌倒检测识别仿真测试 5.程序讲解操作 欢迎订阅FPGA/MATLAB/Simulink系列教程 《★教程1:matlab入…...