SpringBoot之validation参数校验并返回统一格式提示

devtools/2024/12/23 23:48:51/

前言

在日常的开发过程中,后端需要经常对参数进行校验,比如某参数不能为空,格式等,只有校验通过后才可以执行后续的业务逻辑,否则就要在接口返回错误信息给前端。
一般情况下,可以使用if…else…来校验参数,但是当需要校验的参数过多时,使用if…else…校验会写非常的代码,不利于维护,为了让我们的代码看起来更优雅,我们可以使用validation来对参数进行校验。

一、导入依赖

java">        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

二、validation中的注解说明

  1. @Validated:用于在 Spring 控制器层方法参数进行验证
java"> @PostMapping(value = "/collect")public AjaxResult collect(@Validated @RequestBody Collect collect) {//业务代码}
  1. @Valid是 Java 标准的一部分,用于声明需要对嵌套对象进行递归验证。
java">	//用在实体类中@Validprivate DeptParam deptParam;
  1. @NotNull:注解用于检查被注解的元素值不为 null。适用于字符串、集合、Map 等任何对象类型,但不适用于基本数据类型(如 int、long 等)
  2. @NotBlank:用于检查被注解的字符串元素不为 null 且去除两端空白字符后长度大于 0,只适用于字符串类型。
  3. @NotEmpty:注解用于检查被注解的元素不为 null 且不为空,适用于字符串、集合、Map 等
  4. @Pattern:指定字段必须符合指定的正则表达式
  5. @Email:指定字段必须符合Email格式
  6. @Size:指定字段的长度范围

三、统一格式返回提示信息

使用validation 进行参数校验时,会抛出MethodArgumentNotValidException异常,我们只需要捕捉异常,并且将异常内容返回给前端

java">@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {/*** 校验参数*/@ExceptionHandler(MethodArgumentNotValidException.class)public AjaxResult handleValidationExceptions(MethodArgumentNotValidException e) {String msg = Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage();return AjaxResult.error(msg);}
}

http://www.ppmy.cn/devtools/144083.html

相关文章

冒泡排序(JAVA)

package com.guangyunl.f_array;import java.util.Random; import java.util.Scanner;// 数组的冒泡排序 // 冒泡排序法是采用数组中相邻元素进行比较换位 public class Demo02Bubble {public static void main(String[] args) {Demo02Bubble demo02Bubble new Demo02Bubble()…

FastJSON 默认不会包含值为 null 的字段

FastJSON 默认不会包含值为 null 的字段。这是因为 FastJSON 的 toJSONString() 方法默认会跳过 null 值字段。 FastJSON 的默认行为 FastJSON 的默认序列化行为是不包含值为 null 的字段。只有在明确指定序列化选项&#xff08;如 SerializerFeature.WriteMapNullValue&…

flask flask-socketio创建一个网页聊天应用

应用所需环境&#xff1a; python 3.11.11 其他 只需要通过这个命令即可 pip install flask3.1.0 Flask-SocketIO5.4.1 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 最好是用conda创建一个新的虚拟环境来验证 完整的pip list如下 Package Version ----…

LVS介绍

LVS介绍 LVS&#xff08;Linux Virtual Server&#xff09;是一种基于Linux操作系统的虚拟服务器技术&#xff0c;主要用于实现负载均衡和高可用性。它通过将客户端请求分发到多台后端服务器上&#xff0c;从而提高整体服务的处理能力和可靠性。lvs是基于集群的方式实现 集群…

leetcode---mysql

1211. 查询结果的质量和占比 - 力扣&#xff08;LeetCode&#xff09; Queries 表&#xff1a; ---------------------- | Column Name | Type | ---------------------- | query_name | varchar | | result | varchar | | position | int | | rating …

js导出Excel(图片大小,数据转换,导出后面添加现在的时间 )

现在我们来讲一下为什么需要制作这个功能&#xff0c;因为我们需要把页码表格的内容导出到Excel表格进行使用 现在我来讲一下制作这个功能我遇到的问题 目录 1.数据转换的问题 2.图片大小的问题 3.数据是怎么获取导出的问题 4.怎么在导出的表头后面加上现在的时间 5.完整…

使用Java得hutool工具实现验证码登录

使用Java的hutool工具实现验证码登录 1.先说一下流程图 2.导入工具包 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.12</version></dependency>3.流程梳理 3.1前端模版代码 …

05、SpringMVC全注解开发

一、替代web.xml文件 Servlet3.0新特性 web.xml文件可以不用再写了,它提供了一个接口:ServletContainerInitializer 服务器在启动的时候会自动从容器中找ServletContainerInitializer接口实现类,自动调用onStartup()来完成Servlet的上下文初始化。 Spring3.1提供了实现类…