在spring里面有一个注解  @Validated

可以在方法的入参里面这样写

//方法
getActivityFlag(@RequestBody @Validated QueryActivityDto queryActivityDto) //参数详情@NotBlank(message = "userId不能为空")private String userId;@NotNull(message = "storeId不能为空")private String storeId;@NotBlank(message = "festivalId不能为空")private String festivalId;

然后进行报错拦截即可,拦截方式有多种

1、直接在切面进行拦截

实现如下方法

private static Validator validator = Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();/*** @param object object* @param groups groups*/
public static void validateObject(Object object, Class<?>... groups) throws ValidationException {Set<ConstraintViolation<Object>> constraintViolations = validator.validate(object, groups);if (constraintViolations.stream().findFirst().isPresent()) {throw new ValidationException(constraintViolations.stream().findFirst().get().getMessage());}
}

2、进行自定义异常处理

ExceptionHandler(VvipException.class)
public ResultMsg handleException(VvipException e) {// 打印错误信息StackTraceElement s = e.getStackTrace()[0];log.error("msg:【{}】,file:【{}】,line:【{}】,method:【{}】", e.getMessage(), s.getFileName(), s.getLineNumber(), s.getMethodName());return ResultMsg.error(e.getErrorCode().getValue(), e.getMessage());
}private static String getParamErrorMsg(BindingResult bind) {String[] str = Objects.requireNonNull(bind.getAllErrors().get(0).getCodes())[1].split("\\.");String message = bind.getAllErrors().get(0).getDefaultMessage();String msg1 = "不能为空";String msg2 = "不能为null";String msg3 = "must not be null";String msg4 = "must not be empty";if (msg1.equals(message)|| msg2.equals(message)|| msg3.equals(message)|| msg4.equals(message)) {message = ArrayUtil.join(ArrayUtil.remove(str, 0), ".") + ":" + message;}return message;
}

3、还有一种就是在参数后面加一个 BindingResult对象(不推荐 耦合度太高)

findMemberByUnionid(@RequestBody @Validated QueryMemberByUnionidDto queryMemberDto, BindingResult result) {if(result.hasErrors()){result.getFieldErrors().forEach((item)->{log.error("参数错误:{}",item.getDefaultMessage());});}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92444.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92444.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92444.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java学习第一百一十部分——CI/CD

目录 一、前言简介 二、基本信息 三、优势价值 四、核心流程 五、技术栈&#xff08;工具矩阵&#xff09; 六、最佳实践 七、与DevOps关系 八、挑战对策 九、使用建议 十、总结归纳 一、前言简介 CI/CD 的本质是&#xff1a;通过自动化流水线&#xff0c;实现代码从提…

关于 Cocoapods 使用

一、Podfile & .podspec 文件 1、Podfile 1.1. 什么是 pod 简单来说&#xff0c;一个 pod 就是 xcode 里面的一个 dependency&#xff1a; Anyway&#xff0c;pod 就是第三方库的意思。一个 pod 就是指一个第三方库。 1.2. Podfile 有什么用 Podfile 可以理解为就是…

编程速递:2025 年巴西 Embarcadero 会议,期待您的到来

每个英雄都有一段充满奋斗的旅程&#xff0c;这段旅程引领他走向荣耀&#xff0c;而开发者英雄的旅程是2025年巴西Embarcadero大会的重点&#xff0c;以庆祝Delphi成立30周年。网站现已上线巴西Embarcadero在世界上最受期待的Delphi发展英雄会议召开前90天&#xff0c;推出了Em…

DevOps简单教程应用

文章目录概念一、环境准备二、gitlab配置三、.gitlab-ci.yml文件配置概念 Devops是一个概念&#xff0c;就是边开发边测试&#xff0c;能够大大提升开发效率&#xff0c;本文使用pycharmgitlab实现一个简单的DevOps流程 一、环境准备 需要一个测试环境&#xff0c;模拟部署&…

华为流程管理体系构建与落地 之—— 业务流程规划【附全文阅读】

这部分内容聚焦华为业务流程管理&#xff0c;详细阐述了流程规划、设计、运营、评估与优化的具体方法和内容&#xff0c;为企业构建和完善流程管理体系提供了全面的指导。流程规划分类方法&#xff1a;介绍 POS、OES、OMS 等分类法&#xff0c;如 POS 法按规划、运营、支持划分…

Android 项目:画图白板APP开发(零)——功能介绍(笔锋,分页,缩放,多指,硬件加速等)

一、前言 本系列将全面的介绍一些有关Android 画图方面的知识。笔触功能包括&#xff1a;颜色、粗细、透明度、笔锋、橡皮&#xff1b;绘图功能包括&#xff1a;分页、缩放、多指、撤销恢复、笔画加速。别看功能这么多&#xff0c;简单的部分会花较少篇幅介绍&#xff0c;着重会…

香橙派 RK3588 部署千问大模型 Qwen2-VL-2B 推理视频

演示视频 香橙派RK3588部署千问大模型Qwen2-VL-2B推理视频一、场景假设 视频输入为一条网络流&#xff0c;利用大模型对视频中的图像帧进行推理。由于大模型推理耗时长&#xff0c;无法对每帧都进行推理&#xff0c;因此采用跳帧推理的方式&#xff1a;当推理完一帧后&#xf…

排序概念以及插入排序

一、排序基本概念1.就地排序&#xff1a;使用恒定的额外空间来产生输出就地排序只是在原数组空间进行排序处理&#xff0c;也就是输入的数组和得到的数组是同一个2.内部排序和外部排序&#xff1a;待排序数据可以一次性载入到内存中为内部排序&#xff0c;反之数据量过大就是外…

Webpack 核心配置与最佳实践指南

Webpack 是现代前端工程化的核心工具,理解其配置原理和优化技巧对开发效率至关重要。 一、Webpack 基础架构 1、核心概念关系图 2、核心概念详解 概念 作用 示例配置 Entry 应用入口起点 entry: ‘./src/index.js’ Output 编译结果输出位置 output.path: path.resolve(__d…

GISBox私有云+SaaS:安全协同的地理智能平台

一、概述 GISBox&#xff08;GIS 工具箱&#xff09;是一套能够对GIS 影像、地形、倾斜摄影进行场景编辑、切片转化、分发服务的 GIS 工具箱。同时&#xff0c;GISBox还支持私有云并一键开启SaaS服务。 二、什么是私有云&#xff1f; 私有云服务是一种为企业或组织量身定制的…

代理人工智能的隐藏威胁

代理型人工智能的自主性令人兴奋&#xff0c;但事实并非如此。主动性越高&#xff0c;不可预测性就越强&#xff0c;这为严重的、往往被忽视的安全风险打开了大门。从指令劫持到数字供应链的连锁故障&#xff0c;代理型人工智能不仅智能&#xff0c;而且在不受控制的情况下非常…

SonarQube 扫描多个微服务模块

SonarQube 扫描多个微服务模块 在使用 SonarQube/SonarCloud 扫描多个微服务模块时&#xff0c;核心目标是​​确保每个微服务模块被独立分析​​&#xff0c;并在 SonarQube 界面中以独立项目展示结果。以下是具体实现方案&#xff0c;分场景说明&#xff1a; ​​一、前提条…

当前主流且经过市场验证的开源 BI 系统推荐

以下是当前主流且经过市场验证的开源 BI 系统推荐&#xff0c;结合技术特性、适用场景和行业实践&#xff0c;为不同需求提供针对性解决方案&#xff1a;一、综合型开源 BI 平台1. Apache Superset&#xff08;Apache 2.0 协议&#xff09;核心优势&#xff1a;全场景覆盖&…

第05章 排序与分页

1.排序数据 1.1 排序规则 1.2 单列排序 1.3 多列排序 2.分页 2.1 背景 背景1:查询返回的记录太多了,查看起来很不方便,怎么样能够实现分页查询呢? 背景2:表里有 4 条数据,我们只想要显示第 2、3 条数据怎么办呢? 2.2 实现规则 分页原理:所谓分页显示,就是将数据…

第4章 程序段的反复执行4.2while语句P128练习题(题及答案)

&#xff08;&#xff08;1&#xff09;阅读程序#include <bits/stdc.h> using namespace std; //汤永红 int main(){int n,s0;cin >> n;while(n){s s * 10 n % 10;n / 10;}cout << s << endl;return 0; }分别输入&#xff1a;0 1024 1234567890输出…

Linux下管道的实现

1.温故知新在上一篇博客我们知道了动态库是怎么样进行链接的&#xff0c;我们知道我们的.o文件&#xff0c;可执行文件都是我们的ELF格式的文件&#xff0c;是ELF文件&#xff0c;里面就有ELF header&#xff0c;程序头表&#xff0c;节&#xff0c;还有节头表&#xff0c;我们…

光猫、路由器和交换机

光猫&#xff1a;全称为光调制解调器&#xff0c;负责光信号与电信号的转换。在光纤入户的网络环境中&#xff0c;运营商通过光纤传输光信号&#xff0c;光猫将其转换为电脑、路由器等设备能识别的电信号&#xff0c;反之亦然。它是用户端与运营商网络之间的桥梁&#xff0c;保…

从零开始理解编译原理:设计一个简单的编程语言

编译原理是计算机科学的核心领域之一&#xff0c;它研究如何将高级编程语言转换为目标机器能够执行的代码。对于许多开发者来说&#xff0c;编译原理可能是一个神秘而复杂的领域&#xff0c;但实际上&#xff0c;通过系统的学习和实践&#xff0c;我们可以逐步掌握其核心概念和…

年轻新标杆!东方心绣脸韧带年轻技术升级发布

年轻新标杆&#xff01;东方心绣脸韧带年轻技术升级发布近日&#xff0c;“东方心绣脸韧带年轻品项升级发布会”圆满落幕。本次发布会聚焦现代女性面临的衰老困扰&#xff0c;正式推出技术升级成果——“韧带年轻”品项&#xff0c;旨在通过更科学的方案&#xff0c;助力求美者…

qt文件操作与qss基础

文章目录qt文件操作文件概述文件读写文件属性界面优化qss基础选择器的用法结语很高兴和大家见面&#xff0c;给生活加点impetus&#xff01;&#xff01;开启今天的编程之路&#xff01;&#xff01; 作者&#xff1a;٩( ‘ω’ )و260 我的专栏&#xff1a;qt&#xff0c;Li…